题目描述
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。
输入两个正整数m和n(100≤m
≤n
≤10000),输出开区间(m,n)内所有的水仙花数。本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间内所有的水仙花数。
要求定义并调用函数narcissistic(number)
判断number
是否为水仙花数,是则返回1,否则返回0。定义并调用函数print_n(m,n)按从小到大的顺序输出区间(m,n)内所有的水仙花数。
输入
两个正整数m和n(100≤
m
≤n
≤10000)
输出
见样例
样例
样例输入1
153 400
样例输出1
370
371
AC代码
#include<stdio.h>
#include<math.h>
int narcissistic(int n)
{
int x,N=0,sum=0;
x = n;
while(x)
{
x/=10;
N++;
}
int j;
x = n;
while(x)
{
j = x%10;
sum += pow(j,N);
x /= 10;
}
if(n==sum) return 1;
else return 0;
}
void print_n(int m,int n)
{
int i;
for(i=m+1;i<n;i++)
{
if(narcissistic(i)==1)
{
printf("%d\n",i);
}
}
}
int main()
{
int m,n;
scanf("%d %d",&m,&n);
print_n(m,n);
return 0;
}