链接:zoj 1115 或 hdoj 1013 或poj 1519
虽说是水题,却几经波折才搞定。该题目中的数字可能非常大,所以不能使用整型数,只能采用字符变量
代码如下:
#include <stdio.h> int digitalRoot(int n); int digitSum(int n); int main(void) { char c; int sum; while( (c = getchar()) != EOF) { if(c == '0') break; sum = 0; while(c != '\n' && c != EOF) { sum += c - '0'; c = getchar(); } printf("%d\n",digitalRoot(sum)); if( c == EOF) break; } return 0; } int digitalRoot(int n) { int sum = digitSum(n); while(sum >= 10) sum = digitSum(sum); return sum; } int digitSum(int n) { int sum; for(sum = 0; n > 0; n /= 10) sum += n % 10; return sum; }