Project Euler 1-5题

Project Euler|欧拉计划 1~10 (python 3.6) 一,Project Euler. Problem 1: Multiples of 3 and 5 Multiples of 3 and 5 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 10 阅读详情
第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;
        }
    }
    cout<<ans<<endl;
    return 0;
}



第2题

这里写图片描述
题目来源ProjectEuler

这个题是求斐波那契数列中所有小于4000000的值为偶数的项的和。所以暴力扫一遍就好了,如果要计算复杂度,可以将斐波那契看成一个 q>1.5 的等比数列,所以复杂度是 log 级别的。
但是实现的时候,我利用了f&1==0来判断偶数,然而在C++里==的优先级高于&,结果就变成了恒假的判定条件了,输出为0,后来给加上了括号就好了。我以前居然没被这个坑到过?
运算符优先级详情请参考cppreference

int main(){
    int f0=1,f1=1,f=1;
    long long ans=0;
    while(f<=4000000){
        if((f&1)==0)    ans+=f;
        f0=f1;f1=f;
        f=f1+f0;
    }
    cout<<ans<<endl;
    return 0;
}



第3题

这里写图片描述
题目来源ProjectEuler

这个题是求600851475143的最大质因子。
复杂度 nlogn
我们从枚举2到 n 的数,记为 i ,如果nummodi==0那么就将 num 的所有为 i 的因子都除掉。这个时候,我们会执行除法操作的所有i都会是质数。
利用反证法:
  假设当前枚举到的合数 i num的因子,那么 i 一定可以表示为若干个小于i的质数的乘积,并且 nummodi==0
  所以容易得到 nummodpi==0 其中 pi i 的一个质因子,且pi<i
  又因为我们去掉原数的所有小于 i 的质因子后得到num,那么显然 nummodpi!=0 ,与第二步中的式子矛盾。
  所以若 nummodi==0 ,则 i 必为质数。
那么我们记录过程中的最大质因子ans,以及最后的 num 。首先一个数 n 不会有两个>n的质因数,因为这两个质因数的积就大于 n 本身了。所以最后剩下的num要不为 1 要不就是>n的那个质因子。结果就是 max(ans,num)

int main(){
    long long num=600851475143ll;
    long long ans;
    for (int i=2;i*i<=num;i++){
        if (num%i==0)   ans=i;
        while(num%i==0) num/=i;
    }
    cout<<max(num,ans)<<endl;
    return 0;
}



第4题

这里写图片描述
题目来源ProjectEuler

这个题是求所有的三位数的乘积中的最大回文数。
所以什么都不用管,直接 O(n2) 暴力就好了,虽然check还是会有一个log的复杂度,但是很小无伤大雅。
枚举所有三位数的乘积,记录最大的回文数。

bool check(int x){
    int s[10],cnt=-1;
    while(x){
        ++cnt;
        s[cnt]=x%10;
        x/=10;
    }
    for (int i=1;i<=cnt;i++){
        if (s[i]!=s[cnt-i]) return false;
    }
    return true;
}

int main(){
    int ans=0;
    for (int i=999;i>=100;i--){
        for (int j=999;j>=100;j--){
            if (check(i*j)){
                ans=max(ans,i*j);
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}



第5题

这里写图片描述
题目来源ProjectEuler

这题是求最小的一个数 num ,满足 nummodi==0,i[1,20]
换一个角度思考, nummodi==0 表示什么呢?
我们令
num=py11py22pynn
i=pzi11pzi22pzinn
其中 p 为质数
所以yj=max(zij),i[1,20]
这样结论就出来了,只要将1至20每个数分解质因数,记录 zij 的最大值 zmax ,将 ans=pzmaxi
当然求每个质数在[1,20]之间最大幂,最后都乘进ans也是可以的。

int occ[25][25];

int main(){
    int n=20;
    for (int i=2;i<=n;i++){
        for (int tmp=i,j=2;j<=i;j++){
             while(tmp%j==0){
                 occ[i][j]++;
                 tmp/=j;
             }
             occ[0][j]=max(occ[0][j],occ[i][j]);
        }
    }
    long long ans=1;
    for (int i=2;i<=n;i++){
        while(occ[0][i]--){
            ans*=i;
        }
    }
    cout<<ans<<endl;
    return 0;
}
Project Euler | 欧拉计划】Problem1~5 c++详解+答案 目录Problem1 3或5的倍数-(翻译来自pe-cn.github.io 下同)-思路-代码 Problem1 3或5的倍数 -(翻译来自pe-cn.github.io 下同) 英语原 中文翻译 Multiples of 3 and 5 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3,5,6 and 9.The sum of these multiples is 23. Fin 阅读详情

相关推荐

projecteuler-solutions:所有700多个Euler项目问​​的数值答案

警告-此网站包含剧透。 如果您想自己解决问,请立即关闭此页面。 解决方案: : 论坛: : 维护者: 什么是欧拉计划? 欧拉计画( )是一系列具有挑战性的数学/计算机编程问,需要解决的不仅仅是数学方面的知识。 尽管数学将帮助您找到优雅而有效的方法,但仍需要使用计算机和编程技巧来解决大多数问。 什么是projecteuler解决方案? 顾名思义,projecteuler-solutions是站点Project Euler的解决方案的集合。 该站点旨在为Euler项目提供完整而准确的解决方案清单。 这个网站的目的是什么? 在一个棘手的问上奋斗了数小时或数天之后,您最终可能会放弃(毕竟,如果人们从不放弃一个问,世界将是一个陌生的地方)。 此时,您有两个选择: 没有解决方案,您会感到沮丧。 您会感觉到您的所有努力似乎都是徒劳的。 没有办法检查正确的答案,您不知道距解

欧拉计划是什么?

以下文字来自 欧拉计划是什么? 欧拉计划(Project Euler)是一个具有挑战性的不仅仅需要具备数学能力的“数学/计算机编程”问集合。数学方面的知识可以帮助你获得优雅而高效的解决方案,与此同时,计算机应用和编程技巧也不可或缺。 开展欧拉计划这个项目并且持续进行下去的主要目的是提供一个有趣味并且有创造性的环境,在这里可以探索未知领域、学习新的概念。 这些问适合那些人

Hackingwu's coding house 1706

project-euler-solutions:我在 Project Euler 中所有问的答案

项目欧拉解决方案 该存储库包含我对 Project Euler (projecteuler.net) 上发现的编程问的所有答案。 每个解决方案都是用 Java 编写的,旨在从命令行运行。 解决方案文件中将提供指向相关欧拉问的链接。 某些解决方案可能还需要文本文件作为输入。 如果是这样,这将在解决方案文件中指明。 我将努力使所有解决方案尽可能通用,因此如果给定不同的输入文件,任何给定的解决方案都应该产生正确的答案。 根据问的复杂程度,解决方案还可能包括解释我解决问的方法的注释。 如果您对自己解决 Project Euler有任何兴趣,请注意这些解决方案并非旨在帮助他人解决问的提示或帮助,查看或运行这些解决方案可能会破坏您对相关问的享受。 也就是说,我不介意是否有人使用我的解决方案来帮助他们解决问,但是,如果我偶然解决了最近的任何问,我很可能会保留对他们的解决方案,直到

project euler 1

Problem 1 Multiples of 3 and 5 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the mult

whuawell的博客 386

欧拉计划(project euler)最详细中文

欧拉计划是一个在线解网站,目以各类数学问为主,通常需要结合一定的数学与编程知识,写出适当的程序求解问(详细介绍可以参见我的文章)。相比于力扣等刷网站,欧拉计划上的目有着更丰富的知识背景,在解答目的过程中常能学习新的数学与算法知识,享受解愉悦的同时也能颇有收获。 在我的解过程中,我尽量追求对每道给出最优的解法,然后写文章把我的思路与代码记录下来。在每篇文章中,我首先将目翻译成了中文,然后给出了我的解思路和对应的代码,代码可以在这个仓库中找到。希望这些文章能够为大家带来启发,发现更好的

metaquant的博客 6977

Project Euler

这个方阵不太方便直接弄到程序里,所以当做输入数据就可以了。会超时,但是实际上远远跑不满,所以直接枚举。直接枚举直接枚举直接枚举。怎么前面的都是无脑啊?拉插一下就可以得到目中所说的“最优多项式” 了。我写的是高精度,代码比较长,目很简单,就不贴了。注意不一定第一个比第二个大,要取绝对值。直接写一个高精度,或者用 Python 即可。猜一波小的质数不会太大,于是直接枚举。那么可以使用 C++ 自带的(从。算出来,然后直接对着每个。最后可能是个大质数。函数将数转成字符串。

Eason_cyx的博客 2343

Project Euler #1: Multiples of 3 and 5

目链接:点击打开原目 This problem is a programming version of Problem 1 from projecteuler.net If we list all the natural numbers below  that are multiples of  or , we get  and . The su

葱花鸡蛋 496

欧拉计划 Project Euler 68(魔力五边形环)

为了获得最大的 16 位数字串,10 必须是外侧节点之一。为了使起始数字(最小外侧节点)最大,外侧节点集合必须包含尽可能大的数字,同时包含 10。最大的这种集合是 {6, 7, 8, 9, 10},此时最小外侧节点为 6,内侧节点为 {1, 2, 3, 4, 5},每条线总和为 14。在此基础上,从外侧节点 6 开始,通过贪婪选择后续数字,可以构建出最大的 16 位数字串。在如下的“魔力”五边形环中,在其中填入110这10个数,根据不同的填写方式,可以组成16位或17位数字串。

m0_53387935的博客 930

如何用Pipe库解决Project Euler:函数式编程实战案例

Project Euler是一系列具有挑战性的数学与计算机编程问,而Pipe库作为Python中实现中缀表示法的强大工具,能让函数式编程风格变得更加直观和简洁。本文将通过实战案例展示如何利用Pipe库的函数式编程特性,优雅地解决Project Euler,帮助你掌握这种高效的编程范式。 ## 什么是Pipe库? Pipe库是一个轻量级的Python库,它允许开发者使用类似Unix管道的中

gitblog_01189的博客 679

下载Project Euler

NULL 博文链接:https://lifethinker.iteye.com/blog/290159

ProjectEuler:ProjectEuler进度-不存在答案

ProjectEuler ProjectEuler进度-不存在答案 答案是在构造对象时计算的 应该能够运行任何问文件以获得答案。 解决方案在运行时方面可能不是理想的解决方案,但是所有解决方案都在1分钟的指导原则之内。

ProjectEuler1-16代码

ProjectEuler1-16代码,直接引入Eclipse就可以用

Euler Problem 1

[点击打开链接http://projecteuler.net/problem=1]If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.Find the sum of all the multip

188

PE 001 Multiples of 3 and 5

目链接:https://projecteuler.net/problem=1暴力就好了代码:#include&lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); ...

bibibibi的博客 188

PE 005 Smallest multiple

目链接:https://projecteuler.net/problem=5求最大公约数就好了代码:#include&lt;bits/stdc++.h&gt; using namespace std; int lcm(int x,int y) { return x/__gcd(x,y)*y; } int main() { //freopen("in.txt","r",stdin); //f...

bibibibi的博客 195

gh_mirrors/da/Dart项目欧拉问解决方案合集:14个经典数学难的Dart实现详解

在计算机科学和数学领域,欧拉项目(Project Euler)是一个广受欢迎的编程挑战平台,包含了大量有趣且富有挑战性的数学问。**gh_mirrors/da/Dart** 项目为开发者提供了一个全面的解决方案集合,用Dart语言实现了欧拉问的多种算法。本文将带您探索这个项目中14个经典欧拉问的实现思路,帮助您快速掌握数学算法在Dart中的应用技巧。 ## 为什么选择Dart解决欧拉问

gitblog_01091的博客 744

DeEAR语音情感识别教程:如何用app.py定制化输出JSON格式结果并对接业务系统

本文介绍了如何在星图GPU平台上自动化部署DeEAR语音情感表达识别镜像,实现语音情感分析功能。通过该镜像,用户可以快速搭建语音情感识别系统,应用于客服质量监控、在线教育专注度分析等场景,提升业务系统的智能化水平。

weixin_29496633的博客 154
上一篇: 弄一个博客记录一下大学的学习生活
下一篇: Project Euler 6-10题
PFCC
博客等级 码龄9年 6粉丝 15原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值