[JLOI2014]聪明的燕姿(搜索)
城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁。
可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字 S,那么自己等的人手上的号码牌数字的所有正约数之和必定等于 S。
所以燕姿总是拿着号码牌在地铁和人海找数字(喂!这样真的靠谱吗)可是她忙着唱《绿光》,想拜托你写一个程序能够快速地找到所有自己等的人。
Solution
分析约数和的式子(1+p1+p1^2+...+p1^a1)*(1+p2+p2^2+...+p2^a2)*...*(1+pk+pk^2+...+pk^ak)。
本题需要输出所有答案,可以猜测答案不是很多。
我们可以枚举所有的p和他们的指数进行搜索。
我们先定p的范围是根号1e5.
但这样会漏掉很多答案。
观察到大与根号的指数次数最多是一。
所以每次搜的时候判一下有没有大质数。
Code
#include<iostream> #include<cstdio> #include<algorithm> #define N 100002 #define NN 100000 using namespace std; typedef long long ll; int prime[N],vis[N],s,ans,k,st[N],tot; bool pd(int x){if(x==1) return false;if(x<=NN) return !vis[x];for(int i=1;i<=tot&&(ll)prime[i]*prime[i]<=x;i++)if(x%prime[i]==0) return false;return true; } void dfs(int la,int num,int num1){if(num==1){st[++ans]=num1;return;}if(num-1>prime[la]&&pd(num-1))st[++ans]=(num-1)*num1;for(int i=la+1;i<=tot&&prime[i]*prime[i]<=num;++i)for(ll j=prime[i],t=prime[i]+1;t<=num;j*=prime[i],t+=j){if(num%t==0)dfs(i,num/t,num1*j);} } int main(){for(int i=2;i<=NN;++i){if(!vis[i])prime[++tot]=i;for(int j=1;j<=tot&&(k=i*prime[j])<=NN;++j){vis[k]=1;if(i%prime[j]==0)break;}}while(scanf("%d",&s)!=EOF){ans=0;dfs(0,s,1);printf("%d\n",ans);sort(st+1,st+ans+1);if(ans){for(int i=1;i<=ans;++i)printf("%d ",st[i]);printf("\n");}}return 0; }
#include<iostream> #include<cstdio> #include<algorithm> #define N 100002 #define NN 100000 using namespace std; typedef long long ll; int prime[N],vis[N],s,ans,k,st[N],tot; bool pd(int x){if(x==1) return false;if(x<=NN) return !vis[x];for(int i=1;i<=tot&&(ll)prime[i]*prime[i]<=x;i++)if(x%prime[i]==0) return false;return true; } void dfs(int la,int num,int num1){if(num==1){st[++ans]=num1;return;}if(num-1>prime[la]&&pd(num-1))st[++ans]=(num-1)*num1;for(int i=la+1;i<=tot&&prime[i]*prime[i]<=num;++i)for(ll j=prime[i],t=prime[i]+1;t<=num;j*=prime[i],t+=j){if(num%t==0)dfs(i,num/t,num1*j);} } int main(){for(int i=2;i<=NN;++i){if(!vis[i])prime[++tot]=i;for(int j=1;j<=tot&&(k=i*prime[j])<=NN;++j){vis[k]=1;if(i%prime[j]==0)break;}}while(scanf("%d",&s)!=EOF){ans=0;dfs(0,s,1);printf("%d\n",ans);sort(st+1,st+ans+1);if(ans){for(int i=1;i<=ans;++i)printf("%d ",st[i]);printf("\n");}}return 0; }
转载于:https://www.cnblogs.com/ZH-comld/p/9596448.html
[JLOI2014]聪明的燕姿(搜索)相关推荐
- [BZOJ 3629][JLOI2014]聪明的燕姿
传送门 \(\color{green}{solution}\) 爆搜题 /**************************************************************P ...
- 一本通1629聪明的燕姿
1629:聪明的燕姿 时间限制: 1000 ms 内存限制: 524288 KB [题目描述] 城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁. 可是燕 ...
- 2017.9.11 聪明的燕姿 失败总结
这题有毒.如假包换的爆搜 只要知道一个数的约数加起来=分解质因数后每个 质因数1~pi次前缀和 相乘的结果 就好 做(sou)了 所以如果知道约数和,就可以枚举质因数来爆搜 必须剪枝到极致才能过, ...
- 十条技巧 更聪明地使用Google搜索
来源:IT168 Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键字,然后点击"搜索"按钮,等 ...
- YBT 6 数学基础
$补+写题ing$ 第 1 章 快速幂 序列的第 k 个数 link $solution:$ 板子 A 的 B 次方 link $solution:$ 板子 [NOIP2013] 转圈游戏 link ...
- 算法笔记——数学相关
算法笔记--数学相关 高精度 乘法逆元 排列组合 二项式定理 质数的判定和应用 约数 拓展欧几里得 大步小步算法(BSGS) 拓展大步小步算法 快速乘和快速幂 矩阵相关 欧拉函数 欧拉定理及费马小定理 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- [颓废史]蒟蒻的刷题记录
QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...
- 退役前的做题记录2.0
退役前的做题记录2.0 最近在刷省选题......大致上是按照省份刷的. 不过上面的题目顺序是按照写题的顺序排列的,所以可能会有点乱哈. [BZOJ2823][AHOI2012]信号塔 最小圆覆盖,随 ...
最新文章
- java -jar 未响应_Java 方法性能监控和统计工具 MyPerf4J
- FBL3N/FBL3H/FAGLL03/FAGLL03H的区别
- ExtJS 4.2菜单
- eclipse中hadoop2.3.0环境部署及在eclipse中直接提交mapreduce任务
- Windows Server 2008 R2x64 IIS7+PHP5.6 错误 500.0
- 深度学习100例 | 第33天:迁移学习-实战案例教程
- 23 Refs的应用场景与选用思考
- ORB-SLAM2图像预处理流程概括
- des vue 加密解密_vue DES 加密
- HTMl文件的阶层架构 访问父元素和子元素
- java map size 不准确_java1.7以前ConcurrentHashMap的size方法
- oracle instant imp,使用instantclient连接oracle数据库
- 怎样在Apple Silicon M1 Mac上引导到恢复模式
- AtCoder Beginner Contest 162 D.RGB Triplets
- 2022 Gartner RPA魔力象限发布,两家国产厂商入选,超自自动化成重点
- 【Rust日报】2022-12-04 比较 u64 与比较字符串的性能
- U盘盘符显示不出来了,纠结(已解决)
- html%3ca%3e标签中有变量,经过代码审计找出网站中的XSS漏洞实战(三)
- ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数
- 北京船空航天大学计算机学院,北京航空航天大学
热门文章
- Kafka+Storm+HDFS整合实践
- linux常用命令汇总(pwd,echo,history,nano)
- 开源的DevOps开发工具箱
- mySQL教程 第5章 插入 更新与删除数据
- superset可视化-country map
- 《Non-invasive Fetal ECG Signal Quality Assessment for Multichannel Heart Rate Estimation》论文解读-废弃
- sqoop把mysql数据导入hbase-完整记录
- Flask碰到 原因:CORS 头缺少 'Access-Control-Allow-Origin'解决方案 解决
- kaggle中的Two-Stage比赛规则以及metadata数据的使用规定
- 线性代数导论2——矩阵消元