题意简单,求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=1; for(i=0;i<n;i++) { ans=(ans%9)*n; if(ans==0) ans=9; } ans=ans%9; if(ans==0) ans=9; printf("%d ",ans); } return 0; }
//方法二:乘一次,加一次(这个也可行,这是我自己想的哦~哈哈)
#include<stdio.h> #include<string.h> int f(int num) { int ans=0; while(num) { ans=num%10+ans; num=num/10; } if(ans>9) return f(ans); return ans; } int main() { int n,i,ans,num; while(scanf("%d",&n),n) { ans=f(n); for(i=1;i<n;i++) { num=ans*n; ans=f(num); } printf("%d ",ans); } return 0; }