#include<stdio.h>
#include<math.h>
int function(int a,int b);
int main()
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d",function(x,y));
return 0;
}
int function(int a,int b)
{
int l,r,num=0,hook,wei,weinum,weinum_hook,c[5];
double sum=0;
l = (a<b)? a:b;
r = (a<b)? b:a;
if(r<100) return 0;
if(l<100) l=100;
for (hook=l;hook<=r;hook++)
{
wei = hook;
for (weinum=1;wei!=0;weinum++)
{
c[weinum]=wei%10;
wei/=10;
if (wei==0) break;
}
weinum_hook = weinum;
for (sum=0;weinum_hook>=1;weinum_hook--)
{
sum += pow(c[weinum_hook],weinum);
}
if (int(sum) == hook) num++;
}
return num;
}
- 题目:水仙花数
- 问题描述:水仙花数是指一个 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