九的余数
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。
-
输入
-
第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。
输出
- 输出n整除九之后的余数,每次输出占一行。 样例输入
-
3 4 5 465456541
样例输出
-
4 5
4
-
个人理解:
-
1.最初的想法是,弄个while()循环,然后直接求余数不就可以了,然后发现超时,因为题目数据要求很大,是百万,所以没法直接来;
-
2.想起小学看过的一个关于9的余数的文章,就是各个数位数字相加的和对9的余数,例:465456541,4+6+5+4+5+6+5+4+1=40,40/9=4.......4
-
既40的余数为4,所以465656541的余数为4.
-
-
代码:
-
#include<stdio.h>
#include<string.h>
char n[1000010];
int main()
{
int m,sum,i,s;
scanf("%d",&m);
while(m--)
{
sum=0;
scanf("%s",n);
s=strlen(n);
for(i=s-1;i>=0;i--)
{
sum+=((n[i]-'0')%9);
}
printf("%d\n",sum%9);
}
return 0;
}
-
-
第一行有一个整数m(1<=m<=8),表示有m组测试数据;