题目大意:该题是在digital Roots的基础上增加N的阶乘的数根的判断。就是一个九余数问题。
解题思路:该题是数论中的同余问题,在数论中有一个结论:某数成绩的九余数等于该数九余数的乘积,当余数为0时,该数为9。则该题可以进行转换,任何一位数都可以转化为数位相加的乘积,即ab=(a+b)*(a+b),其它位数同样成立。这样问题就转化为同余问题,详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1163
code:
#include <iostream>
#include <cstdio>
using namespace std;
int n,sum;
int main(){
while(scanf("%d",&n)!=EOF && n){
sum=1;
for(int i=0;i<n;i++)
sum=(sum*n)%9;
if(sum==0) printf("9\n");
else printf("%d\n",sum);
}
return 0;
}