博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Project Euler刷题记录
阅读量:5111 次
发布时间:2019-06-13

本文共 2524 字,大约阅读时间需要 8 分钟。

持续颓废更新中

\(Project\ Euler--\)一个数学题网站,以提交答案为主。

上面有一些不错的数学题,可以锻炼思维。

此篇博客用于记录\(PE\)上的刷题记录。

NO.1 Multiples of 3 and 5

题意:求出\(\sum_{i=1}^{999}i\),满足\(3|i\)\(5|i\)

那么暴力循环判断即可。

代码:

\(Answer:233168\)

#include 
int Sum;int main(){ for(int i=1;i<=999;++i) if(i%3==0||i%5==0) Sum+=i; printf("%d\n",Sum); return 0;}

NO.51 Prime digit replacements

首先筛一波素数,猜测答案不会太大,取上限\(10^6\)

接着对素数暴力判断,因为要置换出\(8\)个素数,所以选择换的数一定\(\le 2\)

然后就是暴力模拟了。

\(Answer:121313\)

#include 
#include
int Ps[100005],Pn;int Num[15],Len;//分解的数字bool Cho[15];//是否置换bool v[1000005];const int Top=1000000;bool DFS(int p,int o){ if(p>Len) { int Cnt=0; for(int i=1;i<=Len;++i) if(Cho[i]) ++Cnt; if(!Cnt)return false; Cnt=0; for(int i=o;i<=9;++i) { int Wn=0; for(int j=Len;j>=1;--j) if(Cho[j])Wn=Wn*10+i; else Wn=Wn*10+Num[j]; if(!v[Wn])++Cnt; } return Cnt==8; } if(Num[p]==o) { Cho[p]=true; if(DFS(p+1,o))return true; } Cho[p]=false; return DFS(p+1,o);}bool Check(int x){ Len=0; while(x)Num[++Len]=x%10,x/=10; bool Flag=true; for(int i=1;i<=Len;++i) if(Num[i]<=2) Flag=false; if(Flag)return false; for(int i=0;i<=2;++i) if(DFS(1,i)) return true; return false;}int main(){ for(int i=2;i<=Top;++i) { if(!v[i])Ps[++Pn]=i; if(i<=Top/i) for(int j=i*i;j<=Top;j+=i) v[j]=true; } for(int i=1;i<=Pn;++i) if(Check(Ps[i])) return printf("%d\n",Ps[i]),0;}

NO.60 Prime pair sets

假设上限\(10^4\)

先筛素数,预处理每两个可以连接的素数,暴搜即可。

\(Answer:26033\)

#include 
#include
#include
inline bool Prime(int x){ for(int i=2;i*i<=x;++i) if(x%i==0) return false; return true;}const int Top=10000;int Ans=0x3f3f3f3f,Cho[10];int Ps[Top+5],Pn;bool v[Top+5];std::vector
g[Top+5];inline bool Acon(int a,int b){ int l1=1,l2=1; for(int i=a;i;i/=10)l1*=10; for(int i=b;i;i/=10)l2*=10; return Prime(a*l2+b)&&Prime(b*l1+a);}void DFS(int Cnt,int Sum){ if(Sum>=Ans)return; if(Cnt==6)return void(Ans=Sum); if(Sum+Ps[Cho[Cnt-1]]>=Ans)return; for(int i=0;i<(int)g[Cho[Cnt-1]].size();++i) { int Next=g[Cho[Cnt-1]][i]; bool Flag=true; for(int j=1;j

NO.? ?

转载于:https://www.cnblogs.com/LanrTabe/p/10134116.html

你可能感兴趣的文章
断点续传
查看>>
iBatis/MyBatis
查看>>
[python] Queue.Queue vs. collections.deque
查看>>
【转】在HTML中使用Javascript
查看>>
Ext.Net学习笔记23:Ext.Net TabPanel用法详解
查看>>
3.1.6 循环栅栏:CyclicBarrier
查看>>
线程池(1)
查看>>
awk字符提取
查看>>
linux下安装JDK和Tomcat
查看>>
android仿苹果分段按钮
查看>>
Java序列化
查看>>
【集训笔记】二分图及其应用【HDOJ1068【HDOJ1150【HDOJ1151
查看>>
高效素数判断
查看>>
[分享]linux Y480安装显卡驱动经历!
查看>>
libgdx与Robovm绑定的坑
查看>>
深入浅出VB.NET提示对话框
查看>>
哲理小故事(二)
查看>>
STL学习笔记(三) 关联容器
查看>>
我要好offer之 C++大总结
查看>>
解决jquery操作checkbox全选全不选无法勾选问题
查看>>