1 /* 2 * Main.c 3 * C11-循环-11. 水仙花数 4 * Created on: 2014年7月30日 5 * Author: Boomkeeper 6 ******部分通过******** 7 */ 8 9 #include <stdio.h> 10 #include <math.h> 11 12 int N;//同题目中的N 13 14 void isNarcissus(int i){ 15 unsigned int sum=0; 16 int tem=i; 17 //将i各位拆分并计算其N次幂之和 18 do{ 19 sum+=pow(i%10,N); 20 i=i/10; 21 }while(i!=0); 22 //如果该N位数各位的N次幂之和等于该数本身,则为水仙花数 23 if(sum==tem) 24 printf("%d ",tem); 25 } 26 27 28 int main(void){ 29 30 scanf("%i",&N); 31 32 int i; 33 for(i=pow(10,N-1);i<pow(10,N);i++) 34 isNarcissus(i); 35 36 return 0; 37 }
又没能完全通过...桑心了...
经检查,输入6或者7的时候,返回结果很慢,我会优化算法,回头补上!
题目链接:
http://pat.zju.edu.cn/contests/basic-programming/%E5%BE%AA%E7%8E%AF-11
,
,