题目链接:Eddy's digital Roots
给出一个数n,求n^n的数根,数根即各位数字之和,如66-->6+6=12-->1+2=3,则66的树根是3。
纯数学解法:
九余数定理:这个数字根等于原数除以9的余数,如66%9=3
n^n直接计算可能溢出,(a*b)%c=((a%c)*(b%c))%c
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n){
int ans=1;
for(int i=0;i<n;i++){
ans=ans*n%9;
}
if(ans==0) printf("9\n");
else printf("%d\n",ans);
}
return 0;
}