zoukankan      html  css  js  c++  java
  • Project Euler 34 Digit factorials


    题意:判断一个数 N 的各个位数阶乘之和是否为其本身,找出所有符合要求的数然后求和

    思路:此题思路跟 30 题相同,找到枚举上界 10 ^ n <= 9! × n ,符合要求的 n < 6 ,因此选择 9! × 6 作为上界


    /*************************************************************************
        > File Name: euler034.c
        > Author:    WArobot 
        > Blog:      http://www.cnblogs.com/WArobot/ 
        > Created Time: 2017年06月23日 星期五 13时52分58秒
     ************************************************************************/
    
    #include <stdio.h>
    #include <inttypes.h>
    
    #define MAX_N 2177280
    int32_t fac[10];
    
    void init_fac(){
    	fac[0] = 1;	
    	for(int32_t i = 1 ; i < 10 ; i++)	fac[i] = fac[i-1] * i;
    }
    
    bool isNumber(int32_t n){
    	int32_t sum = 0 , x = n;
    	while(x){
    		sum += fac[ x % 10 ];
    		x /= 10;
    	}
    	return sum == n;
    }
    
    int32_t main(){
    	int32_t sum = 0;
    	init_fac();
    	for(int32_t i = 3 ; i <= MAX_N ; i++){
    		if( isNumber(i) )	sum += i;
    	}
    	printf("%d
    ",sum);
    	return 0;
    }
  • 相关阅读:
    单调队列和单调栈
    二叉搜索树(BST)
    高斯消元和高斯约旦消元 Gauss(-Jordan) Elimination
    扩展欧几里德算法
    基数排序
    智力题研究
    快速排序和快速选择
    快读模板
    C#知识点
    C#字段属性设置
  • 原文地址:https://www.cnblogs.com/WArobot/p/7069640.html
Copyright © 2011-2022 走看看