int narcissistic( int number );
void PrintN( int m, int n );
函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。
函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。
裁判测试程序样例:#include <stdio.h>
int narcissistic( int number );
void PrintN( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
if ( narcissistic(m) ) printf("%d is a narcissistic numbern", m);
PrintN(m, n);
if ( narcissistic(n) ) printf("%d is a narcissistic numbern", n);
return 0;
}
输入样例:153 400 输出样例:
153 is a narcissistic number
370
371
int narcissistic( int number ){
int pow, t, i, j, sum=0, p, q;
p=number;
i=0;
while(p!=0){ //统计位数
p/=10;
i++;
}
q=number;
while(q!=0){
pow=1;
t=q%10;
for(j=1;j<=i;j++){ //计算各个位数的I次方
pow*=t;
}
sum+=pow;
q/=10;
}
if(sum==number){
return 1;
}else{
return 0;
}
}
void PrintN( int m, int n ){
int i;
for(i=m+1;i<n;i++){
if(narcissistic(i)==1){
printf("%dn", i);
}
}
}