呃呃

看到了这道题 没有任何思路…… 百度了一发题解 说要用约数和定理

就查了一发

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 100000
int 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("");
}
}

BZOJ 3629 约数和定理+搜索的更多相关文章

  1. bzoj 3629 [JLOI2014]聪明的燕姿——约数和定理+dfs

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3629 如果要搜索,肯定得质因数分解吧:就应该朝这个方向想. **约数和定理: 对于任意一个大 ...

  2. 【搜索】【约数个数定理】[HAOI2007]反素数ant

    对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数. 所以,n以内的反质数即为不超过n的 ...

  3. bzoj3629 [JLOI2014]聪明的燕姿——DFS+约数和定理

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3629 扫除了一个知识盲点:约数和定理 约数和定理: 对于一个大于1正整数n可以分解质因数:n ...

  4. [BZOJ 3629][ JLOI2014 ]聪明的燕姿

    这道题考试选择打表,完美爆零.. 算数基本定理: 任何一个大于1的自然数N,都可以唯一分解成有限个质数的乘积N=P₁^a₁ P₂^a₂…Pn^an,这里P₁<P₂<…<Pn均为质数, ...

  5. hdu1492(约数个数定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1492 这里先讲一下约数个数定理: 对于正整数x,将其质因分解为 x = pow(p1, a) * po ...

  6. poj 1845 Sumdiv 约数和定理

    Sumdiv 题目连接: http://poj.org/problem?id=1845 Description Consider two natural numbers A and B. Let S ...

  7. 【线性筛】【筛法求素数】【约数个数定理】URAL - 2070 - Interesting Numbers

    素数必然符合题意. 对于合数,如若它是某个素数x的k次方(k为某个素数y减去1),一定不符合题意.只需找出这些数. 由约数个数定理,其他合数一定符合题意. 就从小到大枚举素数,然后把它的素数-1次方都 ...

  8. 【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)

    题目: POJ1845 分析: 首先用线性筛把\(A\)分解质因数,得到: \[A=p_1^{a_1}*p_2^{a_2}...*p_n^{a_n} (p_i是质数且a_i>0) \] 则显然\ ...

  9. 【FZYZOJ】数论课堂 题解(约数个数定理)

    前言:想了两个小时orz,最后才想到要用约数个数定理…… ------------- 题目大意: 给定$n,q,A[1],A[2],A[3]$ 现有$A[i]=(A[i-1]+A[i-2]+A[i-3 ...

随机推荐

  1. ubuntu 装tensorflow出现 conda install ERROR missing write permission错误

    通过搜索tensorflow然后运行,例如:$ conda install --channel https://conda.anaconda.org/jjh_cio_testing tensorflo ...

  2. oracle和mysql的分页

    如果我们是通过JDBC的方式访问数据库,那么就有必要根据数据库类型采取不同的SQL分页语句,对于MySql数据库,我们可以采用limit语句进行分页,对于Oracle数据库,我们可以采用rownum的 ...

  3. Cause of 400 Bad Request Errors

    The 400 Bad Request error displays inside the Internet browser window, just as web pages do. Cause o ...

  4. git checkout -b 报错

    有时候在git中checkout -b 出现如下报错 $ git checkout -b test --track origin/master fatal: Cannot update paths a ...

  5. DDos游戏行业受攻击最多

    游戏行业遭遇DDOS攻击现状. 游戏一直是最易遭受黑客攻击的行业,高居全年DDOS攻击的48%.大规模攻击居多,平均值均超过100Gbps,攻击峰值急速上升,同比2015年增加了137.1%,其中攻击 ...

  6. Mysql-in查询问题

    Mysql-in查询问题 标签(空格分隔): mysql 问题:mysql用in语法查询出来的数据少了好多! 我的实际情况: 数据表: content字段记录着一些选项的id,多个选项用逗号隔开,比如 ...

  7. C#篇(三)——函数传参之引用类型和值类型

    首先应该认清楚在C#中只有两种类型: 1.引用类型(任何称为"类"的类型) 2.值类型(结构或枚举) 先来认识一下引用类型和值类型的区别: 函数传参之引用类型: 1.先来一个简单的 ...

  8. CUDA笔记12

    这几天配置了新环境,而且流量不够了就没写. 看到CSDN一个人写了些机器学习的笔记,于是引用一下http://blog.csdn.net/yc461515457/article/details/504 ...

  9. 976 B. Lara Croft and the New Game

    You might have heard about the next game in Lara Croft series coming out this year. You also might h ...

  10. SSD-实现

    一.制作voc数据集 1.数据集文件夹 新建一个文件夹,用来存放整个数据集,或者和voc2007一样的名字:VOC2007 然后像voc2007一样,在文件夹里面新建如下文件夹: 2.将训练图片放到J ...