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的因数,所以可以只循环到根号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题解 幂次数的更多相关文章

  1. PHP实现类似题库抽题效果

    PHP实现类似题库抽题效果 大家好,我顾某人又回来了,最近学了一点PHP,然后就想写个简单小例子试试,于是就写了一个类似于从题库抽题的东西,大概就是先输入需要抽题的数量,然后从数据库中随机抽取题目. ...

  2. 『Python题库 - 填空题』151道Python笔试填空题

    『Python题库 - 填空题』Python笔试填空题 part 1. Python语言概述和Python开发环境配置 part 2. Python语言基本语法元素(变量,基本数据类型, 基础运算) ...

  3. Linux 静态库与共享库的使用

    申明: 正如题如示,本篇讲的是Linux下是静态库与共享库,而Window下的动态链接库详细情况可见这篇文章:windows动态链接库 DLL 浅析.虽然原理,思想差不多,但是细节却各有不同. 一.静 ...

  4. 【转】Linux 静态库与共享库的使用

    原文网址:http://blog.csdn.net/heyabo/article/details/11688517 申明: 正如题如示,本篇讲的是Linux下是静态库与共享库,而Window下的动态链 ...

  5. Android:JNI与NDK(二)交叉编译与动态库,静态库

    欢迎关注公众号,第一时间获取最新文章: 本篇目录 一.前言 本篇主要以window开发环境为背景介绍一下NDK开发中需要掌握的交叉编译等基础知识,选window系统主要是照顾大多数读者,mac ,li ...

  6. 2018NOIP赛后总结+后阶段信奥学习个人规划

    目录 2018NOIP赛后总结 赛前 赛时 赛后 后阶段信奥学习个人规划 主要方针 学习安排 比赛安排 刷题安排 2018NOIP赛后总结 赛前 在无数次的思想挣扎后,我在倒数 3 天的时候请假了.这 ...

  7. 关于MFC库和CRT库冲突的分析

    当MFC库和CRT库冲突时,会出现一个LNK2005的错误.具体的错误如下: nafxcwd.lib(dllmodul.obj): error LNK2005: _DllMain@12 already ...

  8. 【转】iOS动态库和静态库的简要介绍

    静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...

  9. C++ 系列:静态库与动态库

    转载自http://www.cnblogs.com/skynet/p/3372855.html 这次分享的宗旨是——让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择 ...

随机推荐

  1. 【LeetCode】405. Convert a Number to Hexadecimal 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Java解法 Python解法 日期 题目地址:ht ...

  2. 【LeetCode】728. Self Dividing Numbers 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 循环 filter函数 数字迭代 日期 题目地址:h ...

  3. 1054 - Efficient Pseudo Code

    1054 - Efficient Pseudo Code    PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: ...

  4. uniCloud爬虫获取网页数据

    'use strict'; let request = require('request') let cheerio = require('cheerio'); //爬虫 let iconv = re ...

  5. 「MySql高级查询与编程」练习:企业员工管理

    题目:企业员工管理 一.语言和环境 1.实现语言:SQL. 2.开发环境:MySQL,navicat for mysql. 二.题目(100分): 1.创建数据库及数据表: (1)创建数据库,名称为d ...

  6. Java Web程序设计笔记 • 【第7章 会话跟踪技术】

    全部章节   >>>> 本章目录 7.1 会话跟踪技术概述 7.1.1 为什么需要会话跟踪 7.1.2 会话的状态和跟踪 7.1.3 会话跟踪技术 7.1.4 会话跟踪工作流程 ...

  7. css 快速入门 系列 —— 浮动

    浮动 以 mdn float 文档 为基础,逐一介绍浮动的本质.浮动的诸多特性.清除浮动以及块格式化上下文(bfc). 概念 当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移 ...

  8. hive 之 将excel数据导入hive中 : excel 转 txt

    一.需求: 1.客户每月上传固定格式的excel文件到指定目录.每月上传的文件名只有结尾月份不同,如: 10月文件名:  zhongdiangedan202010.xlsx  , 11月文件名: zh ...

  9. oracle 之 EXP、IMP 使用简介

    注:DOS命令行中执行exp.imp 导出导入ORACLE数据,ORACLE操作者具有相应的权限! 1.1.导出整库或当前用户:关键字:full语法:exp 用户/密码@数据库实例名 file=导出文 ...

  10. 初识python: 装饰器

    定义: 本质是函数,功能是"装饰"其它函数,即为其他函数添加附加功能原则: 1.不能修改被装饰函数的源代码: 2.不能修改被装饰函数的调用方式实现装饰器知识储备: 1.函数即&qu ...