欧拉工程第34题:Digit factorials

来源:互联网 发布:个人网络招商 编辑:程序博客网 时间:2024/06/10 03:46

题目链接:https://projecteuler.net/problem=34
一个数等于各位数字的阶乘,求满足这个条件的数的和。
就两个数:145和40585
上界不知道的时候试大的数,知道结果了,改小点。
java代码:

package projecteuler31to40;import java.util.Date;class level34{    void solve(){        int Max_Value=50000;        int allsum=0;        int remainder=0;        int[] Factorial={1,1,2,6,24,120,720,5040,40320,362880};        for(int i=100;i<=Max_Value;++i){            int num=i;            int sum=0;            while(num!=0){                remainder=num%10;                sum+=Factorial[remainder];                num=num/10;            }            if(i==sum) {                allsum+=i;                System.out.println(sum);            }        }        System.out.println(allsum);    }    long Fact(int num){        if(num==0 ||num==1){            return 1;        }else{            return Fact(num-1)*num;        }    }}public class Problem34 {    public static void main(String[] args){        Date beginTime=new Date();        new level34().solve();        Date endTime=new Date();        Long Time=endTime.getTime()-beginTime.getTime();        System.out.println("Time="+Time/1000+"秒"+Time%1000+"毫秒");    }}

5ms

Python代码:

fact=[1,1,2,6,24,120,720,5040,40320,362880]allsum=0for i in range(100,50000):    num=i    split=0    while num!=0:        remid=num%10        split+=fact[remid]        num=num//10    if i==split:        allsum+=i        print iprint allsum

直接根据java代码,写的。。。

0 0
原创粉丝点击