信奥题库(OI题库)8月月赛T1题解 幂次数
0.前置知识
分解质因数
快速幂(不必要)
1.思路
首先,我们知道一个正整数(设它为 \(a\) )一定能分解成这样的形式:
其中, \(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题解 幂次数相关推荐
- 信息学奥赛学习规划 国内顶尖信息学奥赛名校训练模式 信奥中的数学
从搜狗CEO王小川(信息学金牌),看这二十几年中国奥赛金牌的去向 从搜狗CEO王小川(信息学金牌),看这二十几年中国奥赛金牌的去向 国内顶尖信息学奥赛名校训练模式有感 国内顶尖信息学奥赛名校训练模式有 ...
- NOI 题目 试题 目录 信奥 历年
NOI 题目 试题 目录 信奥 历年 NOI 2018 题目 试题 目录 信奥 历年 第一试 2018年7月18日 08:00-13:00 1.归程 return 2.冒泡排序 ...
- c语言题库选择填空题,C语言题库(填空题部分)
<C语言题库(填空题部分)>由会员分享,可在线阅读,更多相关<C语言题库(填空题部分)(11页珍藏版)>请在人人文库网上搜索. 1.的双曲馀弦值. 二.填空题一.用习语言读写文 ...
- 二级计算机为让利消费者,计算机二级office题库训练题(2)
D.计算机病毒是一个特殊的寄生程序 15. 以下关于编译程序的说法正确的是( ). A.编译程序属于计算机应用软件,所有用户都需要编译程序 B.编译程序不会生成目标程序,而是直接执行源程序 C.编译程 ...
- c语言二级编程题库,二级C语言题库-编程题.doc
二级C语言题库-编程题 第 PAGE \* Arabic \* MERGEFORMAT 27 页第 PAGE \* Arabic \* MERGEFORMAT 27 页 1.请编写函数fun,其功能是 ...
- python编程题-python编程题库
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 上期题目连接:1000道python题库系列分享十一(9道)上期题目答案:? 本期 ...
- h5软盘占位把定位内容往上顶_安徽省计算机一级考试选择题、操作题、打字题库2012年上半年版.xls...
您所在位置:网站首页 > 海量文档  > 资格/认证考试 > 计算机等级考试 安徽省计算机一级考试选择题.操作题.打字 ...
- cad考试题库绘图题答案_证券从业资格考试证券市场基本法律法规题库答案
内容简介 本题库是证券业从业人员资格考试科目<证券市场基本法律法规>的题库,包括历年真题和章节题库两个部分.具体如下:第一部分为历年真题.精选历年真题,每道题目均提供答案和详细的解析,练习 ...
- 2019网络教育计算机统考模拟试题,最新2019年网络远程教育《计算机应用基础》统考模拟题库500题(含答案)...
2019年网络远程教育统考<计算机应用基础>考试 题库500题[含答案] 一.选择题 1.启动ExCEl2003应用程序后自动建立的工作簿文件的文件名为_______. A.工作簿 B.工 ...
最新文章
- 大型网站技术架构(二)架构模式
- GO学习第一天——环境搭建
- 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第1节 继承_2_继承的格式
- python正则表达式——re模块
- oracle 一张表插入另外一张表 存储过程
- android最新能调试吗,android – 不能在同一台设备上安装调试和发布版本
- Qt文档阅读笔记-Qt Quick Controls - Wearable Demo实例解析
- 谷歌浏览器怎么查找和改变编码格式
- linux如何rpm更新内核,使用RPM包对RedHat进行内核升级
- ORACLE ebs 11.5.10 for linux 安装心得
- cmd 如何跨驱动器移动文件夹
- SiriKit测试全攻略
- OBS Studio 27.0.1版本编译
- geom_segment 新技能get
- 解决CTeX工具包中MikTeX编译TeX文件报错问题
- 智商情商哪个重要_情商与智商,到底哪个更重要?
- 大型软件设计——进度报告
- ACM 海贼王之伟大航路(深搜剪枝)
- 栈Stack和段寄存器SS,SP(学习汇编)
- c语言辗转相除法不同规模的情况,C语言讲义终极勘误版.doc