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 · 95 阅读 · 0 评论 -
【ProjectEuler】16.Power digit sum 幂数和
求2的1000次方的数,所有数字和比较简单 直接上python代码a=2**1000sum=0;while a>0: sum+=a%10 a=a//10print(sum)原创 2020-09-19 14:02:25 · 81 阅读 · 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 npa=np.zeros([21,21])原创 2020-09-19 10:32:55 · 109 阅读 · 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=1for i in range(1, 1000000):原创 2020-09-19 09:58:16 · 348 阅读 · 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 · 216 阅读 · 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 matha = 1b = 2cnt = 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 · 153 阅读 · 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 · 102 阅读 · 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 · 64 阅读 · 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 · 146 阅读 · 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 · 163 阅读 · 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 · 121 阅读 · 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 · 197 阅读 · 0 评论 -
【Project Euler】3.Largest prime factor 寻找一个大数的最大质因子
[ProjectEuler]3.Largest prime factorLargest 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 · 83 阅读 · 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 · 162 阅读 · 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 · 125 阅读 · 0 评论