bzoj 3629: [JLOI2014]聪明的燕姿【线性筛+dfs】
数论+爆搜
详见这位大佬https://blog.csdn.net/eolv99/article/details/39644419
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100000;
int s,p[N+5],tot,ans[N+5],con;
bool v[N+5];
bool ok(int x)
{
if(x==1)
return 0;
if(x<=N)
return !v[x];
for(int i=1;p[i]*p[i]<=x;i++)
if(x%p[i]==0)
return 0;
return 1;
}
void dfs(int la,int nw,int w)
{
if(w==1)
{
ans[++con]=nw;
return;
}
if(w-1>p[la]&&ok(w-1))
ans[++con]=nw*(w-1);
for(int i=la+1;p[i]*p[i]<=w;i++)
for(int j=p[i]+1,t=p[i];j<=w;t*=p[i],j+=t)
if(w%j==0)
dfs(i,nw*t,w/j);
}
int main()
{
for(int i=2;i<=N;i++)
{
if(!v[i])
p[++tot]=i;
for(int j=1;i*p[j]<=N;j++)
{
v[i*p[j]]=1;
if(i%p[j]==0)
break;
}
}
while(scanf("%d",&s)!=EOF)
{
con=0;
dfs(0,1,s);
sort(ans+1,ans+con+1);
printf("%d\n",con);
for(int i=1;i<=con;i++)
printf("%d%c",ans[i],i==con?'\n':' ');
}
return 0;
}
bzoj 3629: [JLOI2014]聪明的燕姿【线性筛+dfs】的更多相关文章
- BZOJ 3629 JLOI2014 聪明的燕姿 约数和+DFS
根据约数和公式来拆s,最后再把答案乘出来,我们发先这样的话递归层数不会太大每层枚举次数也不会太多,然而我们再来个剪枝就好了 #include<cstdio> #include<ios ...
- bzoj 3629 [JLOI2014]聪明的燕姿(约数和,搜索)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3629 [题意] 给定S,找出所有约数和为S的数. [思路] 若n=p1^a1*p2^a ...
- bzoj 3629 [JLOI2014]聪明的燕姿——约数和定理+dfs
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3629 如果要搜索,肯定得质因数分解吧:就应该朝这个方向想. **约数和定理: 对于任意一个大 ...
- [BZOJ 3629][ JLOI2014 ]聪明的燕姿
这道题考试选择打表,完美爆零.. 算数基本定理: 任何一个大于1的自然数N,都可以唯一分解成有限个质数的乘积N=P₁^a₁ P₂^a₂…Pn^an,这里P₁<P₂<…<Pn均为质数, ...
- BZOJ_3629_[JLOI2014]聪明的燕姿_dfs
BZOJ_3629_[JLOI2014]聪明的燕姿_dfs Description 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 ...
- 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]聪明的燕姿 题目背景 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 我听见风来自地铁和人海 我排 ...
- 【LG4397】[JLOI2014]聪明的燕姿
[LG4397][JLOI2014]聪明的燕姿 题面 洛谷 题解 考虑到约数和函数\(\sigma = \prod (1+p_i+...+p_i^{r_i})\),直接爆搜把所有数搜出来即可. 爆搜过 ...
- [JLOI2014]聪明的燕姿(搜索)
城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁. 可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字 S, ...
随机推荐
- Linux审计sudo
Linux日志审计项目案例实战(生产环境日志审计项目解决方案) https://www.linuxidc.com/Linux/2015-07/120501.htm
- hdu - 5074 Hatsune Miku (简单dp)
有m种不同的句子要组成一首n个句子的歌,每首歌都有一个美丽值,美丽值是由相邻的句子种类决定的,给出m*m的矩阵map[i][j]表示第i种句子和第j种句子的最大得分,一首歌的美丽值是由sum(map[ ...
- 09-js数组常用方法
<html> <head> <title>js数组的常用操作</title> <meta charset="UTF-8"/&g ...
- MySQL事务及Spring事务管理
事务,是在数据库中用于保证数据正确性的一种机制,涉及到很多概念以及不同的情况,这里做一个总结 相关概念 事务四特性(ACID) 原子性(Atomicity,或称不可分割性):要么全部完成或者全部不完成 ...
- Eclipse同时显示多个控制台项目的输出
操作步骤: 1.运行项目1,运行项目2 2.在Exlipse中选择这两个的控制台进行切换
- poj 3468 A Simple Problem with Integers(线段树、延迟更新)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 74705 ...
- C语言必会面试题(3、耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)
3.耶稣有13个门徒.当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1.2,3.1,2,3.... 凡是报到"3"就退出圈子.最后留在圈子 ...
- vim、gvim在windows下中文乱码的终极解决方式
測试成功,完美解决. 仅仅需改动VIM文件夹以下的这个文件_vimrc. 加油吧,骚年.非常强大的! set encoding=utf-8 set fileencodings=utf-8,chines ...
- Real-Time Compressive Tracking 论文笔记
总体思想 1 利用符合压缩感知RIP条件的随机感知矩阵对多尺度图像进行降维 2 然后对降维的特征採用简单的朴素贝叶斯进行分类 算法主要流程 1 在t帧的时候,我们採样得到若干张目标(正样本)和背景(负 ...
- slice,substr,substring的区别
<!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Prope ...