2017.3.13 反素数ant 失败总结
2017-03-13 19:19
176 查看
这个题放弃的非常彻底,因为我怀疑这需要我没学过的数论,不能白白耽误时间(其实是不想推)
第一眼感觉应该是欧拉函数的变种(去非整除数),但绝对不是线筛(太慢),感觉约数的个数这个条件很迷啊,给人最直观的感受就是:除了gcd和欧拉函数,其他什么都不会。
看题解: 搜索 、、QAQ
好吧,是有数论启发的搜索:
好吧,用唯一分解定理竟然可以求约数个数、、、
其实第一遍想的时候就想到分解质因数了,也隐约察觉到了重复的质因数和其他的质因数比较暧昧的关系 ←_←
但要具体表达出来确实需要用乘法原理(其实想明白这一步就好办了)
此题关键就是 你要扯明他们的关系,并且确定最大情况质因数的范围、、
还有一个关键点:较小的质因数优于大的质因数:
如7*7*2=98 g(98)不如2*2*7=28 g(28)
码:
第一眼感觉应该是欧拉函数的变种(去非整除数),但绝对不是线筛(太慢),感觉约数的个数这个条件很迷啊,给人最直观的感受就是:除了gcd和欧拉函数,其他什么都不会。
看题解: 搜索 、、QAQ
好吧,是有数论启发的搜索:
好吧,用唯一分解定理竟然可以求约数个数、、、
其实第一遍想的时候就想到分解质因数了,也隐约察觉到了重复的质因数和其他的质因数比较暧昧的关系 ←_←
但要具体表达出来确实需要用乘法原理(其实想明白这一步就好办了)
此题关键就是 你要扯明他们的关系,并且确定最大情况质因数的范围、、
还有一个关键点:较小的质因数优于大的质因数:
如7*7*2=98 g(98)不如2*2*7=28 g(28)
码:
#include<iostream> #include<cstdio> using namespace std; int cishu[22],dui[22]={0,2,3,5,7,11,13,17,19,23,29,31}; long long ci[22][22],daan1,daan2,n; void dfs(int shu,long long lin,int qian) { if(lin>n)return; if(shu==12) { // cout<<lin; int lin2=1; for(int i=1;i<=11;i++) { lin2*=(cishu[i]+1); // cout<<cishu[i]<<" "; } // cout<<endl; if(lin2==daan1&&lin<daan2)daan2=lin; if(lin2>daan1) { daan1=lin2; daan2=lin; //cout<<daan2<<endl; } return; } for(int i=0;i<=qian;i++) { cishu[shu]=i; dfs(shu+1,lin*ci[shu][i],i); } } int main() { for(int i=1;i<=20;i++) for(int j=0;j<=20;j++) { if(j==0) {ci[i][j]=1;continue;} ci[i][j]=ci[i][j-1]*dui[i]; } //cout<<ci[1][3]<<endl; scanf("%d",&n); dfs(1,1,20); printf("%d",daan2); }
相关文章推荐
- ant学习总结(一)
- 常用的ant的操作(我自己的总结)
- 一个失败的总结,日志分析
- JDBC连接失败大总结
- Scrum 开发模式失败案例总结(待续)
- Spring单例模式的一次失败经历和总结
- 一个失败的总结,日志分析
- ant命令总结
- SQL sever 2000 重新安装失败问题总结
- 为了一个失败的项目,好久没来这里了,晚上写个项目总结,好让大家也有个借鉴!!!
- Ant+Subversion总结
- 这个学期总结 失败啊
- 一个失败的总结,日志分析
- “周计划”失败深度总结
- JDBC连接失败大总结
- ant 使用总结
- 调试总结:Ant,CLASSPATH,Runtime.exec() & ultraedit
- 不允许进行远程连接可能会导致此失败 error: 40 (总结)
- 3个终面,3个失败——企业需要的不是最强的人,而是最适合的人。(转载,总结得很好!)
- Playcafe关门大吉 创始人总结10大失败教训