题目:
水仙花数
类别
流程控制
时间限制
2S
内存限制
10000Kb
问题描述
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)。
定义一个函数int function(int a, int b),计算区间[a,b]或区间[b,a]上水仙花数的个数。
输入说明
输入由两个整数a和b构成,a和b之间用空格分隔。0<a,b<10000
输出说明
输出区间[a,b]或区间[b,a]上水仙花数的个数。
输入样例
3 1000
输出样例
4
提示
a,b的位数n可能小于3
#include <stdio.h>
#include<math.h>
int function(int a,int b)
{
int i;
if(b<100)
{
return 0;
}
if(b>=100)
{
int a1,count,sum,SUM=0,max;
max=(a>=100)?a:100;//因为反正都是从一百开始检索
for(i=max;i<=b;i++)
{ count=0;
a1=i;//a1是替身
do{
a1=a1/10;
count++;
}while(a1!=0);//一定不要忘记while分号
a1=i,sum=0;
do{
sum=sum+pow(a1%10,count);
a1=a1/10;
}while(a1!=0);
if(sum==i)
{
SUM++;
}
}
return SUM;//是可以这样写的
}
return 0;//如果不是void函数的话,最好写一个,不然会有编译提示
}
int main() {
int a,b;
scanf("%d %d",&a,&b);
printf("%d",function(a,b));
return 0;
}