2018.09.11 bzoj3629: [JLOI2014]聪明的燕姿(搜索)
传送门
一道神奇的搜索。
直接枚举每个质因数的次数,然后搜索就行了。
显然质因数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]聪明的燕姿(搜索)的更多相关文章
- bzoj3629[JLOI2014]聪明的燕姿
http://www.lydsy.com/JudgeOnline/problem.php?id=3629 搜索. 我们知道: 如果$N=\prod\limits_{i=1}^{m}p_{i}^{k_{ ...
- bzoj千题计划297:bzoj3629: [JLOI2014]聪明的燕姿
http://www.lydsy.com/JudgeOnline/problem.php?id=3629 约数和定理: 若n的标准分解式为 p1^k1 * p2^k2 …… 那么n的约数和= π (Σ ...
- bzoj3629 [JLOI2014]聪明的燕姿——DFS+约数和定理
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3629 扫除了一个知识盲点:约数和定理 约数和定理: 对于一个大于1正整数n可以分解质因数:n ...
- bzoj3629 / P4397 [JLOI2014]聪明的燕姿
P4397 [JLOI2014]聪明的燕姿 根据唯一分解定理 $n=q_{1}^{p_{1}}*q_{2}^{p_{2}}*q_{3}^{p_{3}}*......*q_{m}^{p_{m}}$ 而$ ...
- P4397 [JLOI2014]聪明的燕姿
P4397 [JLOI2014]聪明的燕姿 题目背景 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 我听见风来自地铁和人海 我排 ...
- BZOJ_3629_[JLOI2014]聪明的燕姿_dfs
BZOJ_3629_[JLOI2014]聪明的燕姿_dfs Description 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 ...
- 【LG4397】[JLOI2014]聪明的燕姿
[LG4397][JLOI2014]聪明的燕姿 题面 洛谷 题解 考虑到约数和函数\(\sigma = \prod (1+p_i+...+p_i^{r_i})\),直接爆搜把所有数搜出来即可. 爆搜过 ...
- [JLOI2014]聪明的燕姿(搜索)
城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁. 可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字 S, ...
- bzoj 3629 [JLOI2014]聪明的燕姿(约数和,搜索)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3629 [题意] 给定S,找出所有约数和为S的数. [思路] 若n=p1^a1*p2^a ...
随机推荐
- awk分割字符串
想从目标字符串中,提取想要的字符,可以用awk命令. 例如: 从<version>1.3.1-SNAPSHOT</version>中提取版本号,则可以用命令:awk -F'[& ...
- nginx 限制ip
转自:https://www.cmsky.com/nginx-deny-ip/ 面对垃圾留言和暴力破解,我们可以封禁IP,前文介绍过Apache环境使用.htacess来屏蔽IP,Nginx也可以做到 ...
- 常用HTTP状态码
1.常用状态码介绍 在http响应协议中,我们通过HttpWatch抓包抓取到响应信息.其中响应首行中就包含一个状态码.状态码由三位数字组成,表示请求是否被理解或者被满足.HTTP响应状态码的第一个数 ...
- svn更新代码时控制台出现的英文字母表示什么意思
U:表示从服务器收到文件更新了 G:表示本地文件以及服务器文件都已经更新,而且成功的合并了 A:表示有文件或者目录添加到工作目录 R:表示文件或者目录被替换了 C:表示文件的本地修改和服务器修改发生冲 ...
- mongodb基础学习11-复制集和分片结合使用
实际的使用中复制集和分片是结合使用的,即一个分片由一个复制集构成,多个分片存储数据库的数据 调用脚本启动两个复制集 启动configsvr的节点 启动mongos 增加分片,这次要加上复制集的id,节 ...
- 吴裕雄 实战PYTHON编程(10)
import cv2 cv2.namedWindow("frame")cap = cv2.VideoCapture(0)while(cap.isOpened()): ret, im ...
- TensorFlow—CNN—CIFAR数据集分类
- 122. Best Time to Buy and Sell Stock II (Array;Greedy)
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- android mapView
1.Because the Maps library is not a part of the standard Android library, you must declare it in the ...
- OC 线程操作3 - NSOperation
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...