欧拉工程第34题:Digit factorials
2015-05-21 20:25
232 查看
题目链接:https://projecteuler.net/problem=34
一个数等于各位数字的阶乘,求满足这个条件的数的和。
就两个数:145和40585
上界不知道的时候试大的数,知道结果了,改小点。
java代码:
5ms
Python代码:
直接根据java代码,写的。。。
一个数等于各位数字的阶乘,求满足这个条件的数的和。
就两个数: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=0 for 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 i print allsum
直接根据java代码,写的。。。
相关文章推荐
- 欧拉工程第30题:Digit fifth powers
- 欧拉工程第33题:Digit cancelling fractions
- 欧拉工程第51题:Prime digit replacements
- 欧拉工程第74题:Digit factorial chains
- 欧拉工程第63题:Powerful digit counts
- 欧拉工程第56题:Powerful digit sum
- 欧拉工程第25题:1000-digit Fibonacci number
- 欧拉工程第18题
- 欧拉工程第29题:Distinct powers
- 欧拉工程第2题 在斐波那契数列中,找出4百万以下的项中值为偶数的项之和
- 欧拉工程第9题 找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}
- 欧拉工程第16题 2的1000次方的各位之和是多少?
- Java进阶之欧拉工程 第十六篇【2的1000次方各位之和为多少】
- Java 欧拉工程 第二十四篇【0,1,2,3,4,5,6,7,8,9的第100万个字典排列是什么】
- Java 欧拉工程 第二十七篇【找出为连续数字产生最多质数的二次公式】
- Project Euler:Problem 34 Digit factorials
- 欧拉工程第19题
- 欧拉工程第26题:Reciprocal cycles
- 欧拉工程第一题 找出1000以下的自然数中,属于3和5的倍数的数字之和。
- Java 欧拉工程 第二十一篇【计算10000以下所有相亲数之和】