HDU 1163 Eddy's digital Roots(模)

时间:2021-12-07 13:21:43

HDU 1163

题意简单,求n^n的(1)各数位的和,一旦和大于9,和再重复步骤(1),直到和小于10.

//方法一:就是求模9的余数嘛! (228) leizh007 2012-03-26 21:03:19 (确实可行)

#include<stdio.h>
#include<string.h>
int main()
{
int n,i,ans;
while(scanf("%d",&n),n)
{
ans=;
for(i=;i<n;i++)
{
ans=(ans%)*n;
if(ans==)
ans=;
}
ans=ans%;
if(ans==)
ans=;
printf("%d\n",ans);
}
return ;
}

  //方法二:乘一次,加一次(这个也可行,这是我自己想的哦~哈哈)

#include<stdio.h>
#include<string.h>
int f(int num)
{
int ans=;
while(num)
{
ans=num%+ans;
num=num/;
}
if(ans>)
return f(ans);
return ans;
}
int main()
{
int n,i,ans,num;
while(scanf("%d",&n),n)
{
ans=f(n);
for(i=;i<n;i++)
{
num=ans*n;
ans=f(num);
}
printf("%d\n",ans);
}
return ;
}