这题主要是找规律,第一次找出来!~~
题目的意思是求一个数的digital root,这个所谓的digital root也就是一个数的各位数之和,如果这个数的两位数以上,重复再算digital root,直到这个数是一位数。
这一题就是求n^n的digital root。
规律如下:
n个n相乘的结果假设为S,S的digital root 等于这n个数的digital root的相乘。
下面的是AC的代码,很简单的:
#include <iostream> using namespace std; int main() { int i, j, n; while(cin >> n, n) { j = n; int m; while(j >= 10) //求输入的n的digital root { m = 0; while(j) { m += j % 10; j /= 10; } j = m; } m = j; for(i = 1; i < n; i++) //循环n - 1 次求解 { j = j * m; int k; while(j >= 10) { k = 0; while(j) { k += j % 10; j /= 10; } j = k; } } cout << j << endl; } return 0; }
杭电ACM1163——Eddy's digital Roots
时间: 2024-11-09 02:20:48