bzoj3629 [JLOI2014]聪明的燕姿

网友投稿 649 2022-08-29

bzoj3629 [JLOI2014]聪明的燕姿

bzoj3629 [JLOI2014]聪明的燕姿

​​ Description 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 我听见风来自地铁和人海 我排着队拿着爱的号码牌 城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁。可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字S,那么自己等的人手上的号码牌数字的所有正约数之和必定等于S。 所以燕姿总是拿着号码牌在地铁和人海找数字(喂!这样真的靠谱吗)可是她忙着唱《绿光》,想拜托你写一个程序能够快速地找到所有自己等的人。 Input 输入包含k组数据(k<=100)对于每组数据,输入包含一个号码牌S Output 对于每组数据,输出有两行,第一行包含一个整数m,表示有m个等的人,第二行包含相应的m个数,表示所有等的人的号码牌。注意:你输出的号码牌必须按照升序排列。 Sample Input 42 Sample Output 3 20 26 41 HINT 对于100%的数据,有S<=2*10*9 他求的这个其实就是σ(?)=n 那么知道σ的求解公式是分解质因数之后x=(p1^0+p1^1+..p1^a1)*(p2^0+p2^1+..p2^a2).. 所以我们不妨针对n分解质因数 每次枚举每个质因子在原数中出现了几次 那么在我n中的体检就是这个次方的体现 然后暴搜索即可 注意剪枝还有输出格式否则会pe

#include#include#define N 110000#define ll long long#define rg registerusing namespace std;int prime[N],tot,cnt,ans[N],n;bool not_prime[N];inline bool isprime(int x){ if (x<=1e5) return !not_prime[x]; for (rg int i=1;prime[i]*prime[i]<=x;++i) if (x%prime[i]==0) return 0;return 1;}inline void dfs(int last,int x,int left){ if (left==1) {ans[++cnt]=x;return;} if (prime[last]

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux 常用监控指标总结(linux查看cpu信息)
下一篇:bzoj4892 [Tjoi2017]dna SAM 后缀自动机
相关文章

 发表评论

暂时没有评论,来抢沙发吧~