您的位置:首页 > 其它

欧拉工程第34题:Digit factorials

2015-05-21 20:25 232 查看
题目链接: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=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代码,写的。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: