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;
} 
运行结果

XDOJ34

上一篇:重修 网络最大流(即最小割)


下一篇:Redis 错误Please check the Redis logs for details about the RDB error解决