![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ProjectEuler
不吃冰的北极熊
这个作者很懒,什么都没留下…
展开
-
【ProjectEuler】17.数字的字母有几个数字?
求1-1000的所有的数,转为英文单词后,它们的字母共有多少个 不计算空格和连字符 例如 42 (three hundred and forty-two)共有23个字母 115 (one hundred and fifteen) 有20个字母 python代码如下 a = {0: '', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine'} b1 = {10: 't原创 2020-09-19 14:55:47 · 96 阅读 · 0 评论 -
【ProjectEuler】16.Power digit sum 幂数和
求2的1000次方的数,所有数字和 比较简单 直接上python代码 a=2**1000 sum=0; while a>0: sum+=a%10 a=a//10 print(sum)原创 2020-09-19 14:02:25 · 83 阅读 · 0 评论 -
【ProjectEuler】15.Lattice paths 到达矩阵右下角的路径数
求20*20的网格中,从左上角到右下角有多少走法 原题如下 动态规划基础 把网格看成二维矩阵,a[0][0]为左上角起点 ,a[20][20]为右下角终点 从起点到第一行任何一个点都只有一种路线,即a[0][j]=1 同样的,到第一列任何一个点也只有一种路线,即a[i][0]=1 到任何一个点的路径数a[i][j]=a[i-1][j]+a[i][j-1],因为到这个点只有这两条路可以走 依次计算即可 python 代码如下 import numpy as np a=np.zeros([21,21])原创 2020-09-19 10:32:55 · 114 阅读 · 0 评论 -
【ProjectEuler】14.Longest Collatz sequence 最长的Collatz序列
求这种特殊序列的最大长度起始数 当n是偶数时,n的下一个数等于n/2 当n是奇数时,n的下一个数等于3*n+1 例如:13->40->20->10->5->16->4->2->1 虽然还没有得到证明,但我们认为任何一个数作为起点,都能最终得到1 求哪一个数作为起点,它能得到最长的序列(在一百万以内) 起点小于一百万,但是中间的数可以大于一百万 原题如下 python代码如下 m = 1;n=1 for i in range(1, 1000000):原创 2020-09-19 09:58:16 · 352 阅读 · 0 评论 -
【ProjectEuler】13.Large sum 大数和
求下列100个50位数的和的前十位数字 原题如下 Work out the first ten digits of the sum of the following one-hundred 50-digit numbers. (矩阵省略) 思路 将其存入二维数组,从右往左按列求和(注意计算进位 python代码如下 import numpy as np # 导入数据到二维数组中 a = np.zeros([100, 50], dtype=int) s = """ 37107287533902102798原创 2020-09-18 19:26:16 · 220 阅读 · 0 评论 -
【ProjectEuler】12.Highly divisible triangular number 多因数的三角形数
求第一个超过500个因数的三角形数 原题目如下 所谓的三角形数,即自然数的和 第一个是1,第二个是1+2=3,第三个是1+2+3=6······ 第7个就是1+2+3+4+5+6+7=28 代码如下 ```import math a = 1 b = 2 cnt = 0 //记录因子数 while cnt <= 500: cnt = 0 a = a + b b = b + 1 t = int(math.sqrt(a)+1) for i in range(原创 2020-09-18 15:44:52 · 159 阅读 · 0 评论 -
【ProjectEuler】11.Largest product in a grid 矩阵中的最大乘积
求一个20x20 的矩阵中,相邻的四个数最大乘积 相邻的四个数可以是同一行、同一列或者同一条对角线上 原题目如下 解题思路 首先是处理数据,将矩阵存入二维数组中,这里采用字符串,一次把矩阵的数目传入,然后处理。 存入数组后,暴力求解 代码如下 #include<iostream> #include<string> using namespace std; int S_to_int(char a) //单个字符转int { return a - '0'; } int main()原创 2020-09-17 20:38:57 · 104 阅读 · 0 评论 -
【ProjectEuler】 10.Summation of primes 素数和
求200万以内的素数之和 比较简单,直接上代码 #include<iostream> #include<cmath> using namespace std; bool is_prime(int k)//判断是不是素数 { for (int i = 2; i <= sqrt(k); i++) { if (k % i == 0) return false; } return true; } int main() { long long int a = 0;原创 2020-09-17 17:07:48 · 69 阅读 · 0 评论 -
【ProjectEuler】9.Special Pythagorean triplet 特殊的毕格拉斯三角形数
求一组毕格拉斯三角形数,他们的和是1000 原题目 毕格拉斯三角形数 其实就是满足勾股定理的三个数,例如32+42=52 使用双重循环暴力解 #include<iostream> using namespace std; int main() { int a, b, c; for (int i = 1; i < 1000; i++) { int f = 0; for (int j = 1; j < 1000; j++) { a = i; b = j;原创 2020-09-17 14:54:20 · 147 阅读 · 0 评论 -
【ProjectEuler】8.Largest product in a series 相邻13个数的最大乘积
求给出的一串数据中相邻的13个数的最大乘积是多少 原题目如下 从这1000个数据里面找出最大的13个相邻数的乘积 思路 使用滑动窗口暴力求解,窗口大小为13,计算这13个数的乘积,再与当前记录的最大乘积作比较。 首先需要处理数据,讲这1000个数据作为字符串存入,然后拆分为一个个数字存入数组,最后计算。 代码如下 #include<iostream> #include<vector> #include<string> using namespace std; int原创 2020-09-16 16:08:30 · 167 阅读 · 0 评论 -
【ProjectEuler】7.10001st prime 第10001个素数
求第10001个素数 原题目 判断一个数是不是素数,只需要判断除了1和它本身外有没有其他的因数。 暴力求解,代码如下 #include<iostream> #include<cmath> using namespace std; bool is_prime(int k)//判断是不是素数 { for (int i = 2; i <= sqrt(k); i++) //不用遍历所有的数,如果一个数从2到它的平方根都没有它的因数, {原创 2020-09-16 14:27:40 · 123 阅读 · 0 评论 -
【ProjectEuler】6.Sum square difference 和的平方与平方和的差
求前一百的自然数和的平方与平方和的差 原题目: Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum. 比较简单,直接上代码 #include<iostream> using namespace std; int main() { int a=0, b=0; for (int i = 1; i <= 10原创 2020-09-16 14:07:49 · 202 阅读 · 0 评论 -
【Project Euler】3.Largest prime factor 寻找一个大数的最大质因子
[ProjectEuler]3.Largest prime factor Largest prime factor 寻找一个大数的最大质因子 代码如下 #include <iostream> #include<cmath> using namespace std; bool is_prime(long long int k) { if (k < 0) return false; if (k == 1) return true; for (int i原创 2020-09-15 16:50:18 · 86 阅读 · 0 评论 -
【Project Euler】5.Smallest multiple 求能被1-20所有的数整除的最小整数
求能被1-20所有的数整除的最小整数 原问题 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20? 思路 先考虑求能被两个数整除的最小整数,即求这两个数的原创 2020-09-15 20:12:04 · 168 阅读 · 0 评论 -
【ProjectEuler】4.Largest palindrome product 两个三位数相乘得到的最大回文数
求由两个三位数相乘得到的最大回文数 什么是回文数 回文数是指一个数,它从前往后读和从后往前读的结果是一样的。 比如9009,102343201 代码如下 #include<iostream> using namespace std; //判断一个数是不是回文数 bool is_pal(int k) { int a[7] = {}; int n = 0; while (k > 0) { a[n] = k % 10; k /= 10; n++; } int i = 0原创 2020-09-15 17:36:59 · 127 阅读 · 0 评论