数根跟9同余,发现这个相信其他的都是小意思了 118. 数根 时限: 0.50 sec 空间: 4096 KB 设 f(n) 表示十进制正整数 n 的各位数字之和。如果 f(n) 是一个1位数那么他就是 n 的数根。否则的话 f(n) 的数根就是 n 的数根。举例说明:987的数根是 6(9+8+7=24 2+4=6)。你的任务是算出这样的数的数根: A1*A2*…*AN + A1*A2*…*AN-1 + … + A1*A2 + A1。 输入 输入包含K个测试点。在第一行会给出 K (1<=K<=5)。每个测试点一行。首先是一个正整数N (N<=1000)。 接着N个非负整数 (序列 A)。 均不超过109。 输出 每个测试点一行,输出给定数的数根。 样例输入 1 3 2 3 4 样例输出 5 #include <iostream> using namespace std; int main() { int T; scanf("%d", &T); int a[2000]; while(T--) { int n; scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); a[i] %= 9; } int res = 0; int tot; for(int i = 1; i <= n; i++) { tot = 1; for(int j = 1; j <= i; j++) { tot *= a[j]; tot %= 9; } res += tot; res %= 9; } if(res == 0) cout << 9 << endl; else cout << res << endl; } return 0; }