2012/8/6 9:12
九的余数
时间限制:
3000ms | 内存限制:
65535KB
难度:
3
-
描述
-
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。
-
输入
-
第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。
输出
- 输出n整除九之后的余数,每次输出占一行。 样例输入
-
3 4 5 465456541
样例输出
-
4 5 4
自然数n的位数小于等于一百万,这是一个超级大数,但因为是对九取余,有了很巧妙的方法,先观察下面表格:
不难发现,N mod 9的值等于N的第一位数字对9取余的值,所以一个数整除9的余数就等于这个数每一位相加所得和整除9的余数。
需要注意的一点是,字符串要一次读进来,不能读一个处理一个,否则会因为频繁调用scanf()而超时。#include <stdio.h> char number[1000005]; int main() { int i, n, testNum; scanf("%d\n", &testNum); while (testNum-- != 0) { scanf("%s", number); for (i = n = 0; number[i] != '\0'; i++) { n += number[i] - '0'; } printf("%d\n", n%9); } return 0; }
-
第一行有一个整数m(1<=m<=8),表示有m组测试数据;