因为不会有正数各位之和为0,所以只会有1-9这9个根。 假设,数d的根为d%9!!!!!!!!(不取0,整除时取9) 首先,1-9这9个数成立 假定,d的根为d%9,则d+1的根为d的根+1,即d%9+1=(d+1)%9. 得证。 第二步详细一点的说明: d表示为a1a2a3a4...aN,d+1表示为a1a2a3a4...(aN+1) d+1与a1a2a3a4...aN+1同根,即d%9+1。 考虑大数的情况,需要做一次处理,程序简单如下(AC) #include <stdio.h> char s[10000]; int main() { char *p; int d; while (scanf("%s", s) > 0) { p = s; d = 0; while (*p) { //对于大数,直接求一次各位的和。 d += *p - '0'; ++p; } if (d == 0) break; //输入0,退出。 d %= 9; if (d == 0) d = 9; //整除取9. printf("%d\n", d); } return 0; } |
1013 来自杭电discuss版块
最新推荐文章于 2021-01-27 12:38:09 发布