题目链接:HDU 1163 Eddy's digital Roots
九余数定理:
一个数对九取余后的结果称为九余数。
一个数的各位数字之和相加后得到的<10的数字称为这个数的九余数(如果相加结果大于9,则继续各位相加。
#include <iostream>
#include <cstdio>
using namespace std;
/**九余数定理
一个数对九取余后的结果称为九余数。
一个数的各位数字之和相加后得到的<10的数字称为这个数的九余数(如果相加结果大于9,则继续各位相加
**/
int pow_mod(int a ,int n,int m)
{
if(n == 0)
return 1;
int x = pow_mod(a,n / 2,m);
long long ans = (long long)x * x % m;
if(n%2 == 1)
ans = ans *a % m;
return (int)ans;
}
int main()
{
int n, m, res;
while(scanf("%d", &n) != EOF && n)
{
res = pow_mod(n, n, 9);
if(res)
printf("%d\n", res);
else
printf("9\n");
}
return 0;
}