判断一个数和这个数的重组对8是否能整除的题

    xiaoxiao2025-07-07  8

    小猫很无聊,竟然开始研究数字的整除了,有这样一个问题。给定一个非负整数,问能否重排它的全部数字,使得重排后的数能被8整除。输入格式:多组数据,每组数据是一个非负整数。非负整数的位数不超过10000位。输出格式每组数据输出一行,YES或者NO,表示能否重排它的全部数字得到能被8整除的数。注意: 重排可以让0开头。

    实现代码:

    #include "iostream" #include "algorithm" #define maxn 1000 char a[maxn]; int main() { int i,j,n,m=0; for(i=0;i<10;i++) { a[i]=getchar(); if(a[i]=='\n') { break; } } long k=0; for(j=0;a[j]!='\n';j++) { k++; } std::sort(a,a+k); do{ long c; c=atol(a); //atol函数转换 if(c%8==0) { m++; } }while(std::next_permutation(a,a+k)); //利用next_permutation函数对数组进行重组 if(m) { printf("YES"); } else { printf("NO"); } return 0; }

    next_permutation()函数的用法:

          这个函数是从小到大枚举出一个数列中的排序所有可能值

    atol()函数的用法:

          这个函数是将一个字符数组,转换为一个long整型的数

    转载请注明原文地址: https://ju.6miu.com/read-1300442.html
    最新回复(0)