信奥题库(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 这次分享的宗旨是——让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择 ... 
随机推荐
- 【LeetCode】17. Letter Combinations of a Phone Number 电话号码的字母组合
			作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:电话号码, 字母组合,回溯法,题解,leetcode, ... 
- Sharpness-Aware Minimization for Efficiently Improving Generalization
			目录 概 主要内容 代码 Foret P., Kleiner A., Mobahi H., Neyshabur B. Sharpness-aware minimization for efficien ... 
- [c++]关于指针的一些问题记录
			const char* 和char* 之间的转换 const char*是指向常量的指针,而不是指针本身为常量,可以不被初始化.该指针可以指向常量也可以指向变量,只是从该指针的角度而言,它所指向的是常 ... 
- CapstoneCS5212替代IT6516方案|DP转VGA芯片|替代兼容IT6516
			台湾联阳IT6516是一种高性能的DP显示端口到VGA转换器方案芯片.IT6516结合DisplayPort接收器和三重DAC,通过转换功能支持DisplayPort输入和VGA输出.内置Displa ... 
- Reflection 基础知识(二)
			Proxy 定义 Proxy用于修改对象的某些行为,获取值,设置值等 let p = new Proxy(target, handler); target 用Proxy包装的目标对象(可以是任何类型的 ... 
- SpringBoot集成MyBatis-Plus代码生成器(Dao)
			1.说明 本文基于SpringBoot集成MyBatis-Plus代码生成器, 把原来生成Entity.Mapper.Mapper XML.Service.Controller等各个模块的代码, 修改 ... 
- JSP请求响应流程入门介绍
			一个完整的jsp请求响应流程可以简单的使用下图表示: 过滤器:直观的了解,就是对请求做一个过滤作用,比如身份验证,验证不通过的不让他继续往下走 Servlet:请求处理中心,这个也是我们写业务逻辑的地 ... 
- golang vue 使用 websocket 的例子
			一. 编写golang服务端 1.导入必要的websocket包,golang.org/x/net/websocket 或 github.com/golang/net/websocket 2.编写消息 ... 
- cnetos7安装字体
			1 先下载字体 链接:https://pan.baidu.com/s/1FEV7K8c8S6o3gBukkSGp4w 提取码:font 2 安装字体脚本 vi font.sh #!/bin/bash ... 
- 简单谈谈 TCP/IP
			1.前言 IP 或 ICMP.TCP 或 UDP.TELNET 或 FTP.以及 HTTP 等都属于 TCP/IP 协议. 他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分.TCP/I ... 
