Project Euler 62: Cubic permutations
立方数\(41063625 (345^3)\)的各位数重新排列形成另外两个立方数\(6623104 (384^3)\)和\(66430125 (405^3)\)。事实上,\(41063625\)是满足以下条件的最小的立方数,即其各位数的重新排列刚好可以形成三个立方数。求满足以下条件的最小立方数,即其各位数的重新排列可以刚好可以形成五个立方数。
分析:此题的思路比较直接,首先我们需要确定如何来判断两个数是否只是另一个数各位数的重新排列,这个方法比较多,我这里用的方法是将数字转化为字符串,并将字符串进行升序排列,然后再重新组成一个字符串。如果两个数字在以上操作之后的值相同,则两个数字互相构成对方的重排列。第二步,我们对特定范围内的数字进行上述操作并生成一个列表,这个范围内只能先猜测,我这里取得是五至一万的数字,之所以最小数是五,则因为四及以及数的立方只有两个数,最多只能形成两个排列,不可能有形成五个重排列的机会。第三步,我们从五开始计算其对应的排列形式,然后在第二步的列表中找同样形式的排列有多少个,当找到一个排列数刚好为五个的数时,则返回这个数的三次方,即为题目所求。代码如下:
# time cost = 1.65 s ± 7.11 ms
from itertools import count
perm = lambda x : "".join(sorted(str(x)))
def cubic_perm(res):
for i in count(5,1):
c = perm(i**3)
if len([x for x in res if x==c]) == 5:
return i**3
def main():
res = [perm(i**3) for i in range(5,10001)]
return cubic_perm(res)
Project Euler 62: Cubic permutations的更多相关文章
- Project Euler 24 Lexicographic permutations( 康拓逆展开 )
题意: 排列指的是将一组物体进行有顺序的放置.例如,3124是数字1.2.3.4的一个排列.如果把所有排列按照数字大小或字母先后进行排序,我们称之为字典序排列.0.1.2的字典序排列是:012 021 ...
- Project Euler Problem 24-Lexicographic permutations
全排列的生成,c++的next_permutation是O(n)生成全排列的.具体的O(n)生成全排列的算法,在 布鲁迪 的那本组合数学中有讲解(课本之外,我就看过这一本组合数学),冯速老师翻译的,具 ...
- Python练习题 039:Project Euler 011:网格中4个数字的最大乘积
本题来自 Project Euler 第11题:https://projecteuler.net/problem=11 # Project Euler: Problem 10: Largest pro ...
- [project euler] program 4
上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...
- Python练习题 029:Project Euler 001:3和5的倍数
开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...
- Project Euler 9
题意:三个正整数a + b + c = 1000,a*a + b*b = c*c.求a*b*c. 解法:可以暴力枚举,但是也有数学方法. 首先,a,b,c中肯定有至少一个为偶数,否则和不可能为以上两个 ...
- Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.
In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...
- project euler 169
project euler 169 题目链接:https://projecteuler.net/problem=169 参考题解:http://tieba.baidu.com/p/2738022069 ...
- 【Project Euler 8】Largest product in a series
题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...
随机推荐
- 如何定制 Spring Boot 的 Banner?
相信用过 Spring Boot 的朋友们一定在启动日志中见过类似如下的内容,比如在启动 Spring Boot 时,控制台默认会打印 Spring Boot Logo 以及版本信息,这是 Sprin ...
- Linux对目录操作命令
cd /home 进入 '/ home' 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~u ...
- 关闭ESlint 语法检测配置方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qappleh/article/detai ...
- 在npm上发布自己的vue组件库(使用npm install 或者 CDN的方式引用)
一.npm publish发布包到npm库的命令是npm publish npm publish发布包,需要先配置webpack.json文件,如果没有webpack.json文件,可以通过npm i ...
- boostrap原理.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 列表渲染.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 品优购(IDEA版)-第一天
# 品优购(IDEA版)-第一天 品优购IDEA版应该是2019年的新项目.目前只有视频.资料其他都还是旧的. ## 1.学习目标 1:了解电商行业特点以及理解电商的模式 2:了解整体品优购的架构特点 ...
- 透明度设置opacity
透明度设置opacity属性 示例 <!DOCTYPE html> <html> <head> <style> div { background-col ...
- 详细讲解CSS中相对定位relative和绝对定位absolute
很多朋友问过我absolute与relative怎么区分,怎么用?我们都知道absolute是绝对 定位,relative是相对定位,但是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对 ...
- 这一次,彻底理解Promise源码思想
关于Promise的源码实现,网上有太多答案,我也看过很多资料,但都不是很明白.直到有一天我学完函数式编程之函子的概念,才对Promise源码有了更深刻的认识.今天,就让我们来重新认识一下Promis ...