信奥题库(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的因数,所以可以只循环到根号x
while(fuck%i==0){//除掉每个i
fuck/=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题解 幂次数的更多相关文章
- PHP实现类似题库抽题效果
PHP实现类似题库抽题效果 大家好,我顾某人又回来了,最近学了一点PHP,然后就想写个简单小例子试试,于是就写了一个类似于从题库抽题的东西,大概就是先输入需要抽题的数量,然后从数据库中随机抽取题目. ...
- 『Python题库 - 填空题』151道Python笔试填空题
『Python题库 - 填空题』Python笔试填空题 part 1. Python语言概述和Python开发环境配置 part 2. Python语言基本语法元素(变量,基本数据类型, 基础运算) ...
- Linux 静态库与共享库的使用
申明: 正如题如示,本篇讲的是Linux下是静态库与共享库,而Window下的动态链接库详细情况可见这篇文章:windows动态链接库 DLL 浅析.虽然原理,思想差不多,但是细节却各有不同. 一.静 ...
- 【转】Linux 静态库与共享库的使用
原文网址:http://blog.csdn.net/heyabo/article/details/11688517 申明: 正如题如示,本篇讲的是Linux下是静态库与共享库,而Window下的动态链 ...
- Android:JNI与NDK(二)交叉编译与动态库,静态库
欢迎关注公众号,第一时间获取最新文章: 本篇目录 一.前言 本篇主要以window开发环境为背景介绍一下NDK开发中需要掌握的交叉编译等基础知识,选window系统主要是照顾大多数读者,mac ,li ...
- 2018NOIP赛后总结+后阶段信奥学习个人规划
目录 2018NOIP赛后总结 赛前 赛时 赛后 后阶段信奥学习个人规划 主要方针 学习安排 比赛安排 刷题安排 2018NOIP赛后总结 赛前 在无数次的思想挣扎后,我在倒数 3 天的时候请假了.这 ...
- 关于MFC库和CRT库冲突的分析
当MFC库和CRT库冲突时,会出现一个LNK2005的错误.具体的错误如下: nafxcwd.lib(dllmodul.obj): error LNK2005: _DllMain@12 already ...
- 【转】iOS动态库和静态库的简要介绍
静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...
- C++ 系列:静态库与动态库
转载自http://www.cnblogs.com/skynet/p/3372855.html 这次分享的宗旨是——让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择 ...
随机推荐
- golang切片的一些自问自答
你好,我是轩脉刃.这篇是关于go切片的一些问题和回答. go的切片基本上是代码中使用最多的一种数据结构了,使用这种数据结构有哪些要注意的点,这个是非常必要了解的东西.基本上,以前写的一篇博客 http ...
- 【LeetCode】剑指 Offer 04. 二维数组中的查找
二维数组查找:线性查找法 有二维数组: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, ...
- 【Java笔记】zipInputStream使用注意
报错: MALFORMED java.lang.IllegalArgumentException 1. 记得使cry catch 方便找异常的位置 2. 使用zipInputStream打开的zip文 ...
- Are Loss Functions All the Same?
目录 概 主要内容 一些假设 损失函数 损失函数的统计性质 收敛速度 分类的界 Rosasco L, De Vito E, Caponnetto A, et al. Are loss function ...
- Java初学者作业——编写Java程序,简单判断“王者荣耀”英雄收到攻击后是否死亡
返回本章节 返回作业目录 需求说明: 判断"王者荣耀"中英雄受到攻击后是否死亡? 计算"王者荣耀"中怪物攻击英雄的伤害,做出英雄死亡的判断. 如果英雄受到过量伤 ...
- JDBC编程工具类 Dbconnection
JDBC基础:https://blog.csdn.net/weixin_44893902/article/details/106746880 Dbconnection工具类(包含了连接,增删改查,关闭 ...
- Java时间格式化原来这么多玩法
时间过得真是快,现在已经是2022年了.作为开发来说,时间处理是非常繁琐的.从Java 8开始有了新的时间API.时间的处理更加优雅,不再需要借助三方类库,而且线程安全.今天来梳理一下新API的格式化 ...
- dokcer部署Redis哨兵模式
架构图 哨兵的介绍 sentinel , 中文是哨兵. 哨兵是redis 集群架构中非常重要的一个组件,主要功能如下: (1)集群监控:负责监控reidis master 和slave 进程是否正常工 ...
- python 数据库查询,将查询的列名也保存下来,返回字典类型的数据
前言: python + pymysql:通过pymysql,查询到符合要求的数据,不做类型转化的,返回的时元组类型的数据,可以根据下标,取想要的值. self.cursor.execute(sql) ...
- 初识python: 文件下载进度
(后续待更新...) 使用 request 的 urlretrieve 方法创建"回调函数": 下载进度 详细代码如下: #!/user/bin env python # auth ...