【HPUOJ】积分赛(一)B:Divisible

    xiaoxiao2021-03-25  133

    问题 B: Divisible

    时间限制: 1 Sec 内存限制: 128 MB

    题目描述

    给定一个很大的整数,我想知道它能否被9整除。

    输入

    有t组测试数据,每组数据给定一个整数N不存在前导0。(1 <= t <= 20,1 <= N <= 10^200)。

    输出

    对每组测试数据,若N可以被9整除,输出1,反之输出0。

    样例输入

    3 111111111111111111111111111111 6666666666666666 9999999999999999999999999999

    样例输出

    0 0 1 思路:数据很大所以要转化为字符,然后再转化为整型,要用到字符‘0’。代码一:一个数字的各位数字之和能够被9和3整除,那么这个数字也能够被整除。第二个思路:同余定理

    ,其实也是在除法运算中的核心思想,某一位数字乘以10加上后面的一位数字,再对除数取余,余数再进行此过程。

          

    代码#include<cstdio> #include<cstring> #define N 1000 char s[N]; int main() { int t,l; long long sum; scanf("%d",&t); while(t--) { sum=0; scanf("%s",s); l=strlen(s); for(int i=0;i<l;i++) sum+=s[i]-'0';//各位数字相加能够整除,那么该数也能够整除 if(sum%9==0) printf("1\n"); else printf("0\n"); } return 0; }

    #include<cstdio> #include<cstring> #define N 1000 char s[N]; int main() { int t,l,flag; scanf("%d",&t); while(t--) { scanf("%s",s); l=strlen(s); flag=(s[0]-'0')%9; for(int i=1;i<l;i++) { flag=(flag*10+s[i]-'0')%9;//同余定理,很厉害的思路 } if(flag==0) printf("1\n"); else printf("0\n"); } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-15375.html

    最新回复(0)