九的余数 http://acm.nyist.net/JudgeOnline/problem.php?pid=105
九的余数
时间限制:3000 ms | 内存限制:65535 KB
难度:3
- 描述
-
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。
- 输入
- 第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。 - 输出
- 输出n整除九之后的余数,每次输出占一行。
- 样例输入
-
3 4 5 465456541
- 样例输出
-
4 5 4
- 来源
- [苗栋栋]原创
- 上传者
- 苗栋栋
-
#include<stdio.h> #include<string.h> int main() { int n; scanf("%d",&n); while(n--) { int len,i,count=0; char a[1000010]; memset(a,0,sizeof(a)); scanf("%s",a); len=strlen(a); for(i=0;i<len;i++) count+=(a[i]-48); printf("%d\n",count%9); } return 0; }
其实原理很简单就是9有个特性,每隔十个数的余数相等,谁让它是九呢,它下一个数就是十,所以他是每隔十个就循环一次,利用这个性质我们就可以让123456789%9=(1+2+3+4+5+6+7+8+9)%9.