Project Euler 29
来源:互联网 发布:程序员修炼之道pdf高清 编辑:程序博客网 时间:2024/05/20 05:57
这道题我是用数学方法做的……手算的~
我承认是从答案推导了验证了手算答案的正确性……
显然这道题就是用剔除的方法。
显然2的出现有2^2,2^3,2^4,...,2^100
3的先跳过,看4的
4 = 2^2,出现了2^4,2^6,2^8,...,2^200,其中有多少是和2的重复呢?显然是100/2 - 2 +1
100/2是再算偶数个数,(-2+1)是因为从^2开始2,3,4,...,50,总共49个数。
3和9也是这个关系
10和100也是这个关系
2和8也是这个关系,32个重复
以此类推,可以算出
2:49+32+24+19+15
3:49+32+24
4:49+32
5:49
6:49
7:49
8:49
9:49
10:49
后面的平方都大于100,不必考虑了。
这些加起来是619,用99*99(总数)-619 = 9182.这个比正确答案少了一个!哪里多减了?
显然16在2^4和4^2处都进行了重复处理
32,64,81也是……
这肿么办……
那我们一点点容斥原理算吧……
先分析16:2^4处,-24, 4^2处,-49。2^4的24个全部重复……
想到8还有跟16重复的部分……
我实在不想写了……
4 --> 49
8 --> 49
9 --> 49
16 --> 58*****
25 --> 49
32 --> 48
36 --> 49
49 --> 49
64 --> 62*****
81 --> 58*****
100 --> 49
It seems that all squares have 49 occurences and all fourth powers have 9 occurences.
其实有所不同的就上面加星号的几个……手算真的能出来……
直接上python吧……
python实在太过强大……哎……python太强大……太……强大……强……大……
s = {1}for a in range(2, 101):tmp = anow = 0for b in range(2, 101):tmp *= aif tmp in s:passelse:now += 1s.add(tmp)print(a, now)print(len(s))
这个代码就是为了验证我的想法写的……重复的并不难找……但是问题就是……不好说明……还是直接代码吧……
- Project Euler problem 29
- Project Euler 29
- Python-Project Euler 29
- project euler 29
- Project Euler 29
- Euler Project 29
- Project Euler
- project euler
- Project Euler
- Project Euler - Problem 29(delay)
- Project Euler:Problem 29 Distinct powers
- Project Euler .net
- Project Euler 0
- Project Euler 1-6
- Project Euler 7-10
- Euler Project Problem 6
- project euler problem 11
- project euler problem14
- MyBatis的动态SQL详解
- 处理命令行选项
- hibernate
- 使用二分法Arrays.binarySearch()与list.contains()进行元素比较的效率分析
- asp.net生成excel
- Project Euler 29
- 防止touch事件穿层从而触发下层menu响应
- android 复制、剪切、粘贴
- InputStream转换String三种方式
- ural1707 线段树扫描线
- C语言中scanf()的用法
- 雅思口语 第一章 最爱的人最难忘
- 宁夏银川永宁发生4.5级地震 上班族惊魂未定
- C++中的半角、全角字符转换