[恢]hdu 1163
2011-12-23 09:17:14
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1163
题意:求n^n的数字根。
mark:数字根其实就是9的余数。数论知识,n>6的时候,pow(n,n) = pow(n%9, n%6+6)。
代码:
# include <stdio.h>
int pow(int a, int b)
{
int i, ans = 1 ;
for (i = 0 ;i < b ; i++)
ans = ans * a % 9 ;
return ans % 9 ;
}
int main ()
{
int n, ans ;
while (~scanf ("%d", &n) && n)
{
if (n < 6)
ans = pow(n,n) ;
else
ans = pow(n%9, n%6+6) ;
if (ans == 0) ans = 9 ;
printf ("%d\n", ans) ;
}
return 0 ;
}