0.前置知识

  • 分解质因数

  • 快速幂(不必要)

1.思路

首先,我们知道一个正整数(设它为 \(a\) )一定能分解成这样的形式:

\[a= \prod_{i\in N^*} p_i^{c_i} \]

其中, \(p\) 为质数序列。

就是分解质因数。

幂次数可以表示为 \(a^b\)(其中 \(a\) 为质数, \(b\) 为自然数)。如果 \(a^b\) 整除正整数 \(x\) ,并且 \(a^{b+1}\) 不整除 \(x\) ,那么我们称 \(a^b\) 为正整数 \(x\) 的幂次数。 ——摘自题目

结合上面的“ \(p_i^{c_i}\) ”,是不是发现了什么?没错, 幂次数一定等于 \(p_i^{c_i}\) !至于为什么,因为 \(a\) 一定是一个质数(也就代表了不可能有因数),而且 \(p_i^{c_i}\) 一定能整除 \(x\) ,\(p_i^{c_{i-1}}\) 、 \(p_i^{c_{i-2}}\) 这些都存在 \(a^{b+1}\) 能整除 \(x\) ,所以,幂次数一定等于 \(p_i^{c_i}\) 。

有了这个结论,思路就变得十分清晰了——先对 \(x\) 分解质因数求出每个 \(p_i\) 和 \(c_i\) ,幂次数就一定是 \(p_i^{c_i}\) 。 求出每个幂次数,再排序,输出前 \(k\) 个幂次数。

2.Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
map<ll,ll> get_prime_facs(ll x){ //分解质因数,返回值代表每个ret[pi]=ci。map<ll,ll> ret;ll fuck=x;for(ll i=2;i*i<=x;i++){//因为只可能存在一个大于根号x的因数,所以可以只循环到根号xwhile(fuck%i==0){//除掉每个ifuck/=i;ret[i]++;}}if(fuck!=1){//最后可能剩下一个大于根号x的因数ret[fuck]++;}return ret;
}
ll quick_pow(ll x,ll y){//快速幂(其实不需要,换成暴力乘也可以)if(y==0){return 1;}else if(y%2==1){ll nxt=quick_pow(x,y/2);return nxt*nxt*x;}else{ll nxt=quick_pow(x,y/2);return nxt*nxt;}
}
ll x,k;
ll cmp(const ll &l,const ll &r){return l>r;
}
int main(){freopen("num.in","r",stdin);freopen("num.out","w",stdout);scanf("%lld%lld",&x,&k);vector<ll> ans;ans.push_back(1);map<ll,ll> facs=get_prime_facs(x);for(map<ll,ll>::iterator i=facs.begin();i!=facs.end();i++){ans.push_back(quick_pow(i->first,i->second));}//求出每个幂次数sort(ans.begin(),ans.end(),cmp);//从大到小排序for(int i=0;i<k;i++){//输出最大的printf("%lld ",ans[i]);}return 0;
}
3.点一个赞!

信奥题库(OI题库)8月月赛T1题解 幂次数相关推荐

  1. 信息学奥赛学习规划 国内顶尖信息学奥赛名校训练模式 信奥中的数学

    从搜狗CEO王小川(信息学金牌),看这二十几年中国奥赛金牌的去向 从搜狗CEO王小川(信息学金牌),看这二十几年中国奥赛金牌的去向 国内顶尖信息学奥赛名校训练模式有感 国内顶尖信息学奥赛名校训练模式有 ...

  2. NOI 题目 试题 目录 信奥 历年

    NOI  题目  试题 目录 信奥 历年 NOI  2018 题目  试题 目录 信奥 历年 第一试   2018年7月18日   08:00-13:00 1.归程  return 2.冒泡排序    ...

  3. c语言题库选择填空题,C语言题库(填空题部分)

    <C语言题库(填空题部分)>由会员分享,可在线阅读,更多相关<C语言题库(填空题部分)(11页珍藏版)>请在人人文库网上搜索. 1.的双曲馀弦值. 二.填空题一.用习语言读写文 ...

  4. 二级计算机为让利消费者,计算机二级office题库训练题(2)

    D.计算机病毒是一个特殊的寄生程序 15. 以下关于编译程序的说法正确的是( ). A.编译程序属于计算机应用软件,所有用户都需要编译程序 B.编译程序不会生成目标程序,而是直接执行源程序 C.编译程 ...

  5. c语言二级编程题库,二级C语言题库-编程题.doc

    二级C语言题库-编程题 第 PAGE \* Arabic \* MERGEFORMAT 27 页第 PAGE \* Arabic \* MERGEFORMAT 27 页 1.请编写函数fun,其功能是 ...

  6. python编程题-python编程题库

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 上期题目连接:1000道python题库系列分享十一(9道)上期题目答案:? 本期 ...

  7. h5软盘占位把定位内容往上顶_安徽省计算机一级考试选择题、操作题、打字题库2012年上半年版.xls...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp资格/认证考试&nbsp>&nbsp计算机等级考试 安徽省计算机一级考试选择题.操作题.打字 ...

  8. cad考试题库绘图题答案_证券从业资格考试证券市场基本法律法规题库答案

    内容简介 本题库是证券业从业人员资格考试科目<证券市场基本法律法规>的题库,包括历年真题和章节题库两个部分.具体如下:第一部分为历年真题.精选历年真题,每道题目均提供答案和详细的解析,练习 ...

  9. 2019网络教育计算机统考模拟试题,最新2019年网络远程教育《计算机应用基础》统考模拟题库500题(含答案)...

    2019年网络远程教育统考<计算机应用基础>考试 题库500题[含答案] 一.选择题 1.启动ExCEl2003应用程序后自动建立的工作簿文件的文件名为_______. A.工作簿 B.工 ...

最新文章

  1. 大型网站技术架构(二)架构模式
  2. GO学习第一天——环境搭建
  3. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第1节 继承_2_继承的格式
  4. python正则表达式——re模块
  5. oracle 一张表插入另外一张表 存储过程
  6. android最新能调试吗,android – 不能在同一台设备上安装调试和发布版本
  7. Qt文档阅读笔记-Qt Quick Controls - Wearable Demo实例解析
  8. 谷歌浏览器怎么查找和改变编码格式
  9. linux如何rpm更新内核,使用RPM包对RedHat进行内核升级
  10. ORACLE ebs 11.5.10 for linux 安装心得
  11. cmd 如何跨驱动器移动文件夹
  12. SiriKit测试全攻略
  13. OBS Studio 27.0.1版本编译
  14. geom_segment 新技能get
  15. 解决CTeX工具包中MikTeX编译TeX文件报错问题
  16. 智商情商哪个重要_情商与智商,到底哪个更重要?
  17. 大型软件设计——进度报告
  18. ACM 海贼王之伟大航路(深搜剪枝)
  19. 栈Stack和段寄存器SS,SP(学习汇编)
  20. c语言辗转相除法不同规模的情况,C语言讲义终极勘误版.doc

热门文章

  1. Python 拓展之详解深拷贝和浅拷贝
  2. 将SVG文件转换为XML文件
  3. 支付宝手机网页唤醒app支付
  4. 在虚幻引擎中使用Python批处理4_:贴图参数设置
  5. SQLServer 2008 R2出现”不允许保存更改”解决
  6. 【好文】太用力的人跑不远
  7. 非监督特征学习与深度学习(十四)--------循环神经网络
  8. 统计学学习日记:L6-离散趋势分析之总体方差和标准差
  9. R语言 - RStudio使用Git版本控制
  10. 使用Pyqt5制作IT7321仪器测试软件