[NOIP模拟赛]大整数的幂
来源:互联网 发布:已备案域名已删除 编辑:程序博客网 时间:2024/05/17 21:58
题目描述
输入两个正整数A,B。
你有一个数字X,X初始为1。每次你可以对X进行以下两种操作之一:
给X乘上一个任意的质数P
给X乘上它目前的一个因子d
输出将X变成A^B所需要的最少操作次数
输入格式
第一行:一个整数,表示A(2≤A≤10^6)
第二行:一个整数,表示B(1≤A≤10^6)
输出格式
第一行:一个整数,表示答案
输入样例
162
1
输出样例
4
样例解释
操作1:p=3,x=1*3=3
操作1:p=3,x=3*3=9
操作2:d=9,x=9*9=81
操作1:p=2,x=81*2=162
题解
首先,A中有x个质因子,就至少操作x次。
然后,质因子中最高次幂c为多少,就还要操作log2c次,参考快速幂。
#include<cstdio> #include<cmath> #include<algorithm> using namespace std;const int N=1e6+10; int A, B, psum, maxc; struct node{ int v, cnt; }p[N]; void Divi( int n ) { int m=sqrt(n); for( int i=2; i<=m; i++ ) if( !( n%i ) ) { p[++psum].v=i; while( !( n%i ) ) p[psum].cnt++, n/=i; maxc=max( maxc, p[psum].cnt ); } if( n>1 ) { p[++psum].v=n, p[psum].cnt++; maxc=max( maxc, p[psum].cnt ); } } int Sum() { maxc*=B; int res=1, ans=0; while( res<maxc ) res*=2, ans++; return ans; } int main() { scanf( "%d%d", &A, &B ); Divi(A); printf( "%d\n", psum+Sum() ); return 0; }
阅读全文
0 0
- [NOIP模拟赛]大整数的幂
- 模拟大整数的乘法
- 20151004的NOIP模拟赛
- 20151005的NOIP模拟赛
- 20151006的NOIP模拟赛
- 20151007的NOIP模拟赛
- 20151017的NOIP模拟赛
- 20151024的NOIP模拟赛
- 20151031的NOIP模拟赛
- 【NOIP模拟】旷野大计算
- 大整数模拟
- 【noip模拟赛】球的序列
- 2015.10.31的NOIP模拟赛
- 【数论】[NOIP模拟赛]无聊的计算
- 【贪心】[NOIP模拟赛]奇怪的队列
- [NOIP模拟赛]保证的利润
- 计蒜客NOIP模拟赛 直线的交点
- [noip模拟赛]求和(快速幂)
- 第三篇 中国近现代史纲要
- HDU 1085 Holding Bin-Laden Captive!(思维,非母函数)
- 虚拟币开发专题(山寨币怎样通过RPC命令实现区块浏览器)
- (多校联萌)zzu-2181: GJJ的日常之暴富梦
- cocos2dx 的历史版本下载
- [NOIP模拟赛]大整数的幂
- poj 1860
- 生成小程序支付的prepay_id-小程序支付开发-视频教程
- 怠惰是贫穷的制造厂 jzoj 2017.8.18 B组
- 字符串函数strchr,strrchr,strrstr,strncat()函数,strncpy()函数 ,strncmp()函数 ,
- Django的MVC架构(5)
- SQL ISNULL 函数
- 生成小程序支付签名paysign
- 用docker搭建全栈式应用(一)基础篇