欧拉工程第74题:Digit factorial chains
2015-09-27 21:37
483 查看
题目链接:https://projecteuler.net/problem=74
数字145有一个著名的性质:其所有位上数字的阶乘和等于它本身。
1! + 4! + 5! = 1 + 24 + 120 = 145
169不像145那么有名,但是169可以产生最长的能够连接回它自己的数字链。事实证明一共有三条这样的链:
169 --> 363601 --> 1454 --> 169
871 --> 45361 --> 871
872 --> 45362 --> 872
不难证明每一个数字最终都将陷入一个循环。例如:
69 --> 363600--> 1454 --> 169 --> 363601 (--> 1454)
78--> 45360--> 871 --> 45361 (--> 871)
540--> 145 (--> 145)
从69开始可以产生一条有5个不重复元素的链,但是以一百万以下的数开始,能够产生的最长的不重复链包含60个项。
一共有多少条以一百万以下的数开始的链包含60个不重复项?
数字145有一个著名的性质:其所有位上数字的阶乘和等于它本身。
1! + 4! + 5! = 1 + 24 + 120 = 145
169不像145那么有名,但是169可以产生最长的能够连接回它自己的数字链。事实证明一共有三条这样的链:
169 --> 363601 --> 1454 --> 169
871 --> 45361 --> 871
872 --> 45362 --> 872
不难证明每一个数字最终都将陷入一个循环。例如:
69 --> 363600--> 1454 --> 169 --> 363601 (--> 1454)
78--> 45360--> 871 --> 45361 (--> 871)
540--> 145 (--> 145)
从69开始可以产生一条有5个不重复元素的链,但是以一百万以下的数开始,能够产生的最长的不重复链包含60个项。
一共有多少条以一百万以下的数开始的链包含60个不重复项?
import java.util.TreeSet; public class P74{ void run(){ int max_n=1000000; TreeSet<Long> ts = new TreeSet<Long>(); int count=0; long num=0; int len=0; for(int i=69;i<max_n;i++){ ts.clear(); num = i; len = 0; while(ts.add(num)==true){ len++; num=digitFact(num); } if(len ==60) count++; } System.out.println(count); } // 402 // 13s9ms long digitFact(long num){ long result = 0; while(num!=0){ result += Factorial(num%10); num/=10; } return result; } long Factorial(long l){ long fact = 1; for(int i =1;i<=l;i++) fact*=i; return fact; } public static void main(String[] args){ long t0 = System.currentTimeMillis(); new P74().run(); long t1= System.currentTimeMillis(); System.out.println((t1-t0)/1000+"s"+(t1-t0)%1000+"ms"); } }
相关文章推荐
- obtainKeywords
- 2015 ACM/ICPC Asia Regional Shanghai Online
- leetcode11 Container With Most Water
- Kafka错误1_kafka中 FailedToSendMessageException解决_修改host.name
- A child container failed during start
- Contains Duplicate III
- vs2010编译没有问题,然而运行出错Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
- MainPage.xaml
- 使用SDL2出现 “error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main 中被引用” 时的可能错误记录
- Hdu1163 Eddy's digitai Roots(九余数定理)
- 真机测试INSTALL_FAILED_INSUFFICIENT_STORAGE解决办法
- 如何重装air
- main函数的参数:处理命令行选项
- 2015 ACM/ICPC Asia Regional Shanghai Online 1008
- Handling Complexity in the Halo 2 AI
- Contains Duplicate III
- Training ------- Getting Started
- mybaits标签
- SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
- HDU 5476 Explore Track of Point(几何)——2015 ACM/ICPC Asia Regional Shanghai Online