#include <stdio.h>
int wei(int a)
{
int n=0;
while (a)
{
a=a/10;
n=n+1;
}
return n;
}
int function (int a,int b)
{
int t,n,i,sum=0,w,num=0,p,c;
if (a>b)
{
t=b;
b=a;
a=t;
}
if (a<100)
a=100;
if (b<100)
return 0;
for (i=a;i<=b;i++)
{
c=i;
n=wei(i);
sum=0;
while (i)
{
w=i%10;
i=i/10;
sum=sum+w*w*w;
}
if (sum==c)
num=num+1;
}
return num;
}
int main ()
{
int a,b,n;
scanf ("%d %d",&a,&b);
n=function (a,b);
printf ("%d",n);
}
问题描述
水仙花数是指一个 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 main()
{
int i,a,b,c;
for(i=100;i<1000;i++){
a=i/100;
b=(i%100)/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c){
printf("%d\n",i);
}
}
return 0;
}