题解:九余数的定理:一个数对9取余等于这个数各位数相加的和对9取余,例如 123 %9 = (1+2+3)%9,所以题目中要求把一个数的各个位加起来直到是个不大于9的数,就等于直接对这个数对9取余。
#include<iostream> #include<cstdio> #include <cstring> #include<algorithm> using namespace std; /**** 大数不能使用 int digital(int n){ if(n < 10) return n; int sum = 0; while(n%10){ sum += n%10; n /= 10; } return digital(sum); } *********/ /***采用九余定理****/ int main() { char a[100005]; while(scanf("%s",a)){ int len = strlen(a); if(len == 1 && a[0] == '0') break; int sum =0; for(int i=0; i<len; i++){ sum += a[i] -'0'; } printf("%d ", ((sum-1)%9)+1); } return 0; }