dfs

跟上道题很像有木有

同样地,我们暴力枚举约数

根据约数和公式,得出$S=\prod_{i=1}^{n}{(1+p+p^{2}+...+p^{a_{i}})}$

所以每次我们暴力枚举是哪个约数,次数是多少,然后爆搜

如果剩下的约数和$S-1$是质数,那么说明约数只剩下一个大质数,直接统计答案结束即可

因为一个数不可能大于自己的约数和,所以大于$sqrt(S)$的约数只能有一个

#include<bits/stdc++.h>
using namespace std;
const int N = 5e4 + ;
int s, sqrts;
int p[N], mark[N], ans[N << ];
void shaker() {
for(int i = ; i < N; ++i) {
if(!mark[i]) {
p[++p[]] = i;
}
for(int j = ; j <= p[] && i * p[j] < N; ++j) {
mark[i * p[j]] = ;
if(i % p[j] == ) {
break;
}
}
}
}
bool judge(int x) {
if(x == ) {
return ;
}
if(x < N) {
return !mark[x];
}
for(int i = ; p[i] * p[i] <= x; ++i) {
if(x % p[i] == ) {
return ;
}
}
return ;
}
void dfs(int last, int tot, int sum) {
if(tot == ) {
ans[++ans[]] = sum;
return;
}
if(tot - > sqrts && judge(tot - )) {
ans[++ans[]] = sum * (tot - );
}
for(int i = last + ; p[i] <= sqrts; ++i) {
int t = p[i], all = ;
for(int j = ; all + t <= tot; ++j) {
all += t;
if(tot % all == ) {
dfs(i, tot / all, sum * t);
}
t *= p[i];
}
}
}
int main() {
shaker();
while(scanf("%d", &s) != EOF) {
ans[] = ;
sqrts = sqrt(s);
dfs(, s, );
sort(ans + , ans + ans[] + );
printf("%d\n", ans[]);
for(int i = ; i < ans[]; ++i) {
printf("%d ", ans[i]);
}
if(ans[]) {
printf("%d\n", ans[ans[]]);
}
}
return ;
}

最新文章

  1. ABP源码分析三十三:ABP.Web
  2. [Linux]Linux系统调用列表
  3. Spring 4.1+ 的 JSONP使用
  4. Hibernate入门注解笔记
  5. sdk和ndk
  6. CC2540开发板学习笔记(四)&mdash;&mdash;定时器
  7. 在Quartus II中分配管脚的两种常用方法
  8. hdu2039java
  9. Trigger model Trigger expr_id in WorkFolow
  10. Open-Falcon第五步安装Query(小米开源互联网企业级监控系统)
  11. 使用Python写一个贪吃蛇
  12. sed在行首或者行尾添加内容
  13. MySQL表与表之间的关系
  14. 190327 Python登录接口
  15. MySQL 数据库最优化设计原则
  16. 记一次需要用到复杂的groupingBy的需求
  17. .net Core使用Orcle官方驱动连接数据库
  18. intelij idea常用功能介绍
  19. 01-01基于SHELL的数据分析
  20. struts神马的不过是对servlet、filter的封装而已,hibernate神马的也不过是对jdbc的封装而已,他们只是把一些常见的操作流程化了,如果不懂servlet、filter,不懂jdbc,使用struts和hibernate出问题了都不知道是怎么回事。

热门文章

  1. struts 与 Java Web应用简介
  2. Chart.js 动态图表的使用
  3. JDBC超时原理与设置
  4. absolute布局的替代实现
  5. nginx高可用配置
  6. LightOJ - 1395 A Dangerous Maze (II) —— 期望
  7. macd背离的级别
  8. python清空tree.insert()
  9. html5--2.1新的布局元素(1)-header/footer
  10. Linux下查看端口占用情况