Project Euler 30 Digit fifth powers


题意:判断一个数 N 的每一位的5次方的和是否为其本身 ,求出所有满足条件的数的和

思路:首先设这个数 N 为 n 位,可以简单的判断一下这个问题的上界 10 ^ n <= 9 ^ 5 × n,可以解得满足条件的最小解为 5 ,所以取 9 ^ 5 × 6 = 354294 作为枚举的上界


/*************************************************************************
    > File Name: euler030.c
    > Author:    WArobot 
    > Blog:      http://www.cnblogs.com/WArobot/ 
    > Created Time: 2017年06月23日 星期五 13时31分53秒
 ************************************************************************/

#include <stdio.h>
#include <inttypes.h>
#include <math.h>

#define MAX_N 354294

bool isNumber(int32_t n){
	int32_t sum = 0 , x = n;
	while(x){
		sum += (int32_t)pow(x % 10 , 5);
		x /= 10;
	}
	return sum == n;
}
int32_t main(){
	int32_t sum = 0;
	for(int32_t i = 2 ; i <= MAX_N ; i++){
		if( isNumber(i) )	sum += i;
	}
	printf("%d\n",sum);
	return 0;
}
posted @ 2017-06-23 14:05  ojnQ  阅读(188)  评论(0编辑  收藏  举报