这题主要是找规律,第一次找出来!~~
题目的意思是求一个数的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;
}