SGU 118.Digital root

 

时间限制:0.25s

空间限制:4M

题目大意

          给出n个数,求n1+n1*n2+n1*n2*n3+n1...n的数根,数根是一个数各个位置数字和的树根,个位数的数根为它本身。

          例如,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 }

 

 

 

           

posted @ 2014-06-30 21:35  keambar  阅读(189)  评论(0编辑  收藏  举报