其他分享
首页 > 其他分享> > XDOJ34

XDOJ34

作者:互联网

问题描述

水仙花数是指一个 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;
} 
运行结果

在这里插入图片描述

标签:function,10,XDOJ34,int,res,sum,count1
来源: https://blog.csdn.net/m0_48904153/article/details/123040932