XDOJ-函数-水仙花数

XDOJ-函数-水仙花数

为了变得更强。

问题描述

水仙花数是指一个 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]或区间[b,a]上水仙花数的个数。

输入样例

3 1000

输出样例

4

提示

a,b的位数n可能小于3

我的代码

#include
int function(int a,int b);
int main(){
     //因为啊,题目并没有给我们一个主函数,所以就自己写一个啦,为了好在本地测试用
	int m,n,k;
	scanf("%d %d",&m,&n);
	k=function(m,n);
	printf("%d",k);
}
int function (int m,int n){
     
	int i,j,temp,k=0;
	int sum,a[5]={
     0};
	
	if(m>n){
     //保证m
    	i=m;
    	m=n;
    	n=i;
	}
	for(;m<n;m++){
     //进入循环,注意m是循环的条件,所以不能有变动
		sum=0;
		temp=m;//因此我们引入temp来进行计算
		for(i=0;temp/10!=0;i++){
     //将位数存入数组
			a[i]=temp%10;
			temp=temp/10;
		}
		a[i]=temp;
		for(j=0;j<=i;j++){
      /*判断是否为水仙花数,注意题目判定一位独身数不为水仙花数*/
			if(i==2)	sum+=a[j]*a[j]*a[j];
			if(i==3)	sum+=a[j]*a[j]*a[j]*a[j]; 
		}
			if(sum==m)k++;//存水仙花的个数,妙哇
	}
	return k;
}

你可能感兴趣的:(C语言,c语言)