传送门

一道神奇的搜索。

直接枚举每个质因数的次数,然后搜索就行了。

显然质因数k次数不超过logkn" role="presentation" style="position: relative;">logknlogkn,因此搜索很快。

注意,如果最后剩下的乘积-1是一个质数,那么这是一个可行解。

另外对于这道题,我们只需要筛出1e5的素数就够了,太大的直接枚举自己打的素数表判就行了。

代码:

#include<bits/stdc++.h>
#define N 100005
using namespace std;
int pri[N],tot=0,s,cnt=0,ans[N];
bool vis[N];
inline void init(int len){
    for(int i=2;i<=len;++i){
        if(!vis[i])pri[++cnt]=i;
        for(int j=1;j<=cnt;++j){
            if(i*pri[j]>len)break;
            vis[i*pri[j]]=true;
            if(i%pri[j]==0)break;
        }
    }
}
inline bool check(int x){
    if(x==1)return false;
    if(x<=100000)return !vis[x];
    for(int i=1;pri[i]*pri[i]<=x;++i)if(x%pri[i]==0)return false;
    return true;
}
inline void dfs(int lastpri,int mul,int lim){
    if(lim==1){ans[++tot]=mul;return;}
    if(lim-1>pri[lastpri]&&check(lim-1))ans[++tot]=mul*(lim-1);
    for(int i=lastpri+1;pri[i]*pri[i]<=lim;++i){
        for(int mult=pri[i]+1,tmp=pri[i];mult<=lim;mult+=(tmp*=pri[i]))
            if(lim%mult==0)dfs(i,mul*tmp,lim/mult);
    }
}
int main(){
    init(100000);
    while(~scanf("%d",&s)){
        tot=0,dfs(0,1,s),printf("%d\n",tot),sort(ans+1,ans+tot+1);
        for(int i=1;i<=tot;++i)printf("%d%c",ans[i],i==tot?'\n':' ');
    }
    return 0;
}

2018.09.11 bzoj3629: [JLOI2014]聪明的燕姿(搜索)的更多相关文章

  1. bzoj3629[JLOI2014]聪明的燕姿

    http://www.lydsy.com/JudgeOnline/problem.php?id=3629 搜索. 我们知道: 如果$N=\prod\limits_{i=1}^{m}p_{i}^{k_{ ...

  2. bzoj千题计划297:bzoj3629: [JLOI2014]聪明的燕姿

    http://www.lydsy.com/JudgeOnline/problem.php?id=3629 约数和定理: 若n的标准分解式为 p1^k1 * p2^k2 …… 那么n的约数和= π (Σ ...

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

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

  4. bzoj3629 / P4397 [JLOI2014]聪明的燕姿

    P4397 [JLOI2014]聪明的燕姿 根据唯一分解定理 $n=q_{1}^{p_{1}}*q_{2}^{p_{2}}*q_{3}^{p_{3}}*......*q_{m}^{p_{m}}$ 而$ ...

  5. P4397 [JLOI2014]聪明的燕姿

    P4397 [JLOI2014]聪明的燕姿 题目背景 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 我听见风来自地铁和人海 我排 ...

  6. BZOJ_3629_[JLOI2014]聪明的燕姿_dfs

    BZOJ_3629_[JLOI2014]聪明的燕姿_dfs Description 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 ...

  7. 【LG4397】[JLOI2014]聪明的燕姿

    [LG4397][JLOI2014]聪明的燕姿 题面 洛谷 题解 考虑到约数和函数\(\sigma = \prod (1+p_i+...+p_i^{r_i})\),直接爆搜把所有数搜出来即可. 爆搜过 ...

  8. [JLOI2014]聪明的燕姿(搜索)

    城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁. 可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字 S, ...

  9. bzoj 3629 [JLOI2014]聪明的燕姿(约数和,搜索)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3629 [题意] 给定S,找出所有约数和为S的数. [思路] 若n=p1^a1*p2^a ...

随机推荐

  1. DevExpress ImageComboBoxEdit增加

    Combo_订单类型.Properties.Items.Clear() Select Case Combo_客户名称.EditValue Case "ABC" Combo_订单类型 ...

  2. onMouseDown和onPress的差异AS2

    為了要做出比Button物件更複雜的互動,我們通常會改用MovieClip來製作按鈕.如此一來,就需要處理event handler.與滑鼠有關的MovieClip event handler包括on ...

  3. 第一模块第一章 review

    ---恢复内容开始--- 练习题: 1.简述编译型与解释型语言的区别,且分别列出你知道的那些属于编译型,哪些属于解释型 机器语言:由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称 ...

  4. python os.mkdir与 os.makedirs

    1.mkdir( path [,mode] )      作用:创建一个目录,可以是相对或者绝对路径,mode的默认模式是0777.      如果目录有多级,则创建最后一级.如果最后一级目录的上级目 ...

  5. python环境准备以及easy_install和pip的安装

    python3的安装: yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline- ...

  6. UIButton 点击事件传参数

    #import <objc/runtime.h> UIButton *btn = // create the button objc_setAssociatedObject(btn, &q ...

  7. SVM支持向量机推导,工具介绍及python实现

    支持向量机整理 参考: Alexandre KOWALCZYK大神的SVM Tutorial http://blog.csdn.net/alvine008/article/details/909711 ...

  8. r.js打包

    久闻r.js的大名,但实际没有用它做过任何东西.今天用它时,发现网上许多教程都不对.研究一下,把我的实际经验分享给大家. 例子1 先是HTML页面 <!DOCTYPE html> < ...

  9. nodejs文件操作笔记

    nodejs添加了流的概念,通过流操作文件如行云流水,比早前便利畅快多了. 先来第一个例子,我们建一个stream.js文件,里面内容如下: var fs = require("fs&quo ...

  10. 岭回归和lasso回归(转)

    回归和分类是机器学习算法所要解决的两个主要问题.分类大家都知道,模型的输出值是离散值,对应着相应的类别,通常的简单分类问题模型输出值是二值的,也就是二分类问题.但是回归就稍微复杂一些,回归模型的输出值 ...