SGU 118.Digital root
时间限制:0.25s
空间限制:4M
题目大意
给出n个数,求n1+n1*n2+n1*n2*n3+n1...nn 的数根,数根是一个数各个位置数字和的树根,个位数的数根为它本身。
例如,f[987]=f[9+8+7=24]=f[2+4=6]=6;
solution
对于不了解树根的,先看这样的证明
abc 是一个3位数,
abc%9=(a*100)%9+(b*10)%9+c%9
=a%9+b%9+c%9
=(a+b+c)% 9
于是直接模拟,不断取模
参考代码
1 #include <stdio.h> 2 using namespace std; 3 int T, n, x; 4 int main() 5 { 6 scanf("%d", &T); 7 while (T--) 8 { 9 scanf("%d", &n); 10 int ans = 0, tmp = 1; 11 for (int i = 0; i < n; ++i) 12 { 13 scanf("%d", &x); 14 tmp = (tmp * (x % 9)) % 9; 15 ans = (ans + tmp) % 9; 16 } 17 if (!ans) ans = 9; 18 printf("%d\n", ans); 19 } 20 return 0; 21 }