BZOJ 3629 约数和定理+搜索
来源:互联网 发布:php新闻发布系统登录 编辑:程序博客网 时间:2024/05/21 18:42
呃呃
看到了这道题 没有任何思路…… 百度了一发题解 说要用约数和定理
就查了一发
http://baike.so.com/doc/7207502-7432191.html
(不会的可以先学习一下)
然后呢 我们考虑枚举约数
先线性筛一遍10^5以下的 10^5以上的数可以用已经筛过的素因数枚举
最后就搜一下就好了 (记得判断=1的情况)
还有 此题PE很坑爹
不能有行末空格 0的情况不用输出空行
//By SiriusRen#include <cmath>#include <cstdio>#include <algorithm>using namespace std;#define N 100000int s,cnt,pri[N],Ans[N];bool p[N+5];void get_prime(){ for(int i=2;i<=N;i++){ if(!p[i])pri[++cnt]=i; for(int j=1;j<=cnt&&i*pri[j]<=N;j++){ p[i*pri[j]]=1; if(i%pri[j]==0)break; } }}bool is_prime(int x){ if(x<=N)return !p[x]; int temp=sqrt(x); for(int i=1;pri[i]<=temp;i++) if(x%pri[i]==0)return 0; return 1;}void dfs(int last,int ans,int sum){ if(sum==1){Ans[++cnt]=ans;return;} if(sum-1>pri[last]&&is_prime(sum-1))Ans[++cnt]=ans*(sum-1); for(int i=last+1;pri[i]*pri[i]<=sum;i++) for(int psum=pri[i]+1,div=pri[i];psum<=sum;div*=pri[i],psum+=div) if(sum%psum==0)dfs(i,ans*div,sum/psum);}int main(){ get_prime(); while(~scanf("%d",&s)){ cnt=0,dfs(0,1,s); sort(Ans+1,Ans+1+cnt); printf("%d\n",cnt); for(int i=1;i<=cnt;i++){ printf("%d",Ans[i]); if(i!=cnt)putchar(' '); } if(cnt)puts(""); }}
0 0
- BZOJ 3629 约数和定理+搜索
- 约数个数定理 和 约数和定理
- 约数个数定理and约数和定理
- poj1845Sumdiv+约数和定理
- 约数和定理
- [暴力搜索 剪枝 约数和反函数] BZOJ 3629 [JLOI2014]聪明的燕姿
- 数论 约数定理 约数和定理 欧拉定理
- 约数定理(约数个数定理,约束和定理)
- BZOJ 3994 [SDOI2015]约数个数和 (神定理+莫比乌斯反演)
- BZOJ 3629 JLOI2014 聪明的燕姿 约数和+DFS
- bzoj 3629 聪明的燕姿 约数和+dfs
- HDU 1452 Happy 2004(约数和定理)
- hdu-1452(约数和定理+求逆元)
- [bzoj 3994] sdoi2015 约数个数和
- BZOJ 3994 [SDOI2015]约数个数和
- 【SDOI 2015】【BZOJ 3994】约数个数和
- bzoj 3994 [SDOI2015]约数个数和
- BZOJ 3994 [SDOI2015]约数个数和
- 协议栈
- JavaWeb框架数据传输乱码问题解决
- 用化学绘图软件连接两个结构片段的方法
- 关于python "ImportError: cannot import name quotes_historical_yahoo" 问题
- 视觉SLAM实战(一):RGB-D SLAM V2
- BZOJ 3629 约数和定理+搜索
- matlab生成dll copy by scudz
- JAVA中关于Map的九大问题
- Linux-shell exit code
- getFragmentManager与getChildFragmentManager,解决fragment白屏 、
- eclipse中maven项目修改
- 解析Spring托管下Hibernate Session的生命周期
- 创建一个成功的App前要考虑的5个要点
- No module named win32api