问题描述
水仙花数是指一个 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,p,q,r,sum=0;
int arr[5];
if(a<100){
a=100;//即从100开始数
}
int count1=0;
int count2=0;
for(i=a;i<=b;i++){
q=i;
r=i;
//求出一个数的位数
while(q!=0){
p=q%10;
arr[count1]=p;
count1++;
q=q/10;
}
while(r!=0){
p=r%10;
sum+=pow(p,count1);
r/=10;
}
if(sum==i){
count2++;
}
sum=0;
count1=0;
}
return count2;
}
int main(){
int a,b,res;
scanf("%d %d",&a,&b);
res=function(a,b);
printf("%d",res);
return 0;
}