![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Project Euler
文章平均质量分 87
PFCC
这个作者很懒,什么都没留下…
展开
-
Project Euler 16-20题
第16题 题目来源ProjectEuler这个题是求210002^{1000}在十进制表示下各位数字的和。 我没想到很好的算法,只想到一个O(n2)O(n^2)的高精度处理,直接求出结果,再一位一位加起来。int main(){ int num[1000],len=0; num[0]=1; for (int i=1;i<=1000;i++){ int tm原创 2017-09-13 17:18:46 · 567 阅读 · 0 评论 -
Project Euler 第51题 Prime digit replacements
题目来源ProjectEuler这个题先定义并解释了 x prime value family,指的是一个素数,通过将若干个数字相同的位替换为其他数字,得到的最多10个数中,仍然为素数的这些数组成的集合,比如13,将1替换成其他数字,得到23,33,43,53,63,73,83,93,加上13总共9个数,其中有13,23,43,53,73,83这六个数是素数,这就构成了一个6 prime va原创 2018-01-29 11:08:58 · 475 阅读 · 0 评论 -
Project Euler 46-50题
第46题 题目来源ProjectEuler这个题求满足如下条件的最小的数x: 1.是奇数 2.是合数 3.不能表示为x=p+2∗y2x=p+2*y^2,其中p为质数,y为正整数。 先筛出一个范围内的质数,比如1~100w,然后求其中的合数是否满足以上条件。 复杂度O(nn√)O(n\sqrt n)#include<bits/stdc++.h>using namespace std原创 2017-09-29 18:15:51 · 529 阅读 · 0 评论 -
Project Euler 11-15题
话说刚刚才注意到Project Euler的提交时间记录的是UTC 第11题 题目来源ProjectEuler这一题与第8题类似,不过这个求的是八个方向上的最值。虽然这个也可以有类似移动窗口的做法,但是考虑到长度只有四,O(n∗len∗direction)O(n*len*direction)的复杂度也不高,而移动窗口的代码复杂度会高很多。所以选择了裸暴力的做法。 (期间因为cal函数没有ret原创 2017-09-12 17:16:14 · 506 阅读 · 0 评论 -
Project Euler 1-5题
第1题 题目来源ProjectEuler这个题求的是严格小于1000的数中,是3或5的倍数的数的和。(刚开始理解错below的意思了,把1000算进去了,尴尬)int main(){ int ans=0; for (int i=1;i<1000;i++){ if (i%3==0||i%5==0){ ans+=i; }原创 2017-09-10 21:25:29 · 1287 阅读 · 0 评论 -
Project Euler 31-35题
第31题 题目来源ProjectEuler这一题求200可以由1,2,5,10,20,50,100,200以多少种不同的方式相加而成。 将硬币分别标记为f[1]=1;f[2]=2;f[3]=5;f[4]=10;f[5]=20;f[6]=50;f[7]=100];f[8]=200; 使用dp[i][j]dp[i][j]表示利用最大面额为f[j]的纸币组成i有多少种方法。 转移就是dp[i][j原创 2017-09-20 13:02:36 · 1096 阅读 · 0 评论 -
Project Euler 6-10题
为什么感觉6-10题比1-5题暴力了好多,没什么好的可改进点-_-!!! 第6题 题目来源ProjectEuler这个题求(∑ni=1i)2−(∑ni=1i2)(\sum_{i=1}^ni)^2-(\sum_{i=1}^ni^2),是O(1)O(1)的。int main(){ long long ans=0,n=100; ans=n*(n+1)/2; ans*=ans;原创 2017-09-12 13:42:40 · 445 阅读 · 2 评论 -
Project Euler 41-45题
第41题 题目来源ProjectEuler 该题求由1-n的数字的全排列构成的数中,最大的素数。 显然n小于等于九。而若n=9,则∑9i=1i=45\sum_{i=1}^9i=45,是9的倍数,所以n≤8n \leq 8。 我们利用prev_permutation()函数,求一个全排列的上一个全排列,而运行len!len!次后将会回到初始排列。我们枚举全排列的长度,由长至短依次检验,一旦成功原创 2017-09-27 20:18:57 · 711 阅读 · 0 评论 -
Project Euler 36-40题
第36题 题目来源ProjectEuler这一题求的是小于1,000,000的所有数中,在十进制和二进制表示下都是回文数的数的和。 枚举每个数,检验即可,复杂度O(nlogn)O(n\log n) 另一种方法,可枚举前一半的位上的数字,然后将整个数加上去,由于这样产生的所有数都是结果的一部分,省去了许多冗余的运算,会更快一些。但是代码复杂度更高一些。 我使用的是第一种方法:#include<原创 2017-09-26 20:41:24 · 475 阅读 · 0 评论 -
Project Euler 26-30题
第26题 题目来源ProjectEuler这一题是求1i,∀i∈[2,1000)\frac1i,\forall i \in [2,1000)的所有结果的十进制小数表示下具有最长循环节的ii。 我将在我的算法中定义有限小数也是循环节为1的循环小数,例如0.25=0.25(0)0.25=0.25(0) 回忆列竖式的过程,不太会用mathtype,没对齐,不过应当容易看懂。 在竖式的最后一行,原创 2017-09-18 16:33:05 · 805 阅读 · 0 评论 -
Project Euler 21-25题
第21题 题目来源ProjectEuler这个题定义了一个函数d(x)=∑divisorid(x)=\sum divisor_i,其中divisoridivisor_i是xx的因子且!=x!=x 求小于10,000的所有满足d(d(a))==ad(d(a))==a的aa的和。 首先求所有数不为本身的因子的和。如果一个数一个数去分解,复杂度将会是O(nn√)O(n\sqrt n)的。但是有一个O原创 2017-09-14 20:23:59 · 637 阅读 · 1 评论 -
Project Euler 52题 Permuted multiples
题目来源ProjectEuler题意非常简单,找出一个数x,使得x,2x,3x,4x,5x,6x包含的数字相同但是顺序不同。其实如果想到了17=0.142857⋯" role="presentation">17=0.142857⋯17=0.142857⋯\frac 17=0.142857\cdots,就会想到142857可能是答案,但是不敢确定是最小的,还是写代码验证一下。原创 2018-01-29 11:42:10 · 313 阅读 · 1 评论