题意:给出一个x 可以做两种操作  ①sqrt(x)  注意必须是完全平方数  ② x*=k  (k为任意数)  问能达到的最小的x是多少

思路: 由题意以及 操作  应该联想到唯一分解定理   经过分析可以知道   ②操作最多使用一次  将x分解成一系列素数乘积的时候  只要看最高幂次离哪个二的幂近(只取上界)

并且把所以素因子都凑成找到的这个二的幂  只要x*=k一步就可以凑成  然后一直操作①模拟即可 而如果刚好全部都相等并且都是2的幂次 那么直接一直操作①模拟即可

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+;
int fac[maxn],mi[maxn];
int solve(int x){
ll tmp=;
for(int i=;;i++){
if(tmp>=x){
return i;
}
else tmp<<=;
}
}
map<ll,int>mp;
int main(){
int n;
scanf("%d",&n);
ll la=;
for(int i=;i<=;i++){
la<<=;
if(la>)break;
mp[la]=;
}
if(n==){
cout<<<<" "<<<<endl;
return ;
}
int flag=;
long long ans=;
for(int i=;i<=n;i++){
if(n%i==){
fac[flag]=i;
ans*=i;
while(n%i==){
n/=i;
mi[flag]++;
}
flag++;
}
}
int maxnum=;
int cnt=;
int ok=;
for(int i=;i<flag;i++){
maxnum=max(maxnum,mi[i]);
if(mp[mi[i]]!=)ok=;
if(i>&&mi[i]!=mi[i-])ok=;
}
if(maxnum==){
cout<<ans<<" " <<<<endl;
return ;
}
if(maxnum&)maxnum++;
if(ok)cnt++;
// cout<<maxnum<<endl;
cnt+=solve(maxnum);
cout<<ans<<" "<<cnt<<endl;
return ;
}

Codeforces Round #520 (Div. 2) B. Math 唯一分解定理+贪心的更多相关文章

  1. Codeforces Round #520 (Div. 2) B. Math

    B. Math time limit per test:1 second memory limit per test:256 megabytes Description: JATC's math te ...

  2. Codeforces Round #520 (Div. 2) B math(素数因子的应用)

    题意: 给出一个n ; 有两个操作: 1,mul A   ,   n=n*A   : 2,sqrt()  ,  n=sqrt(n)  开更出来必须是整数 : 求出经过这些操作后得出的最小  n , 和 ...

  3. Codeforces Round #520 (Div. 2)

    Codeforces Round #520 (Div. 2) https://codeforces.com/contest/1062 A #include<bits/stdc++.h> u ...

  4. Codeforces Round #297 (Div. 2)C. Ilya and Sticks 贪心

    Codeforces Round #297 (Div. 2)C. Ilya and Sticks Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: xxx  ...

  5. CF每日一练 Codeforces Round #520 (Div. 2)

    比赛过程总结:过程中有事就玩手机了,后面打的状态不是很好,A题理解错题意,表明了内心不在状态,B题想法和思路都是完全正确的,但是并没有写出来,因为自己代码能力不强,思路不是特别清晰,把代码后面写乱了, ...

  6. Codeforces Round #520 (Div. 2) E. Company(dfs序判断v是否在u的子树里+lca+线段树)

    https://codeforces.com/contest/1062/problem/E 题意 给一颗树n,然后q个询问,询问编号l~r的点,假设可以删除一个点,使得他们的最近公共祖先深度最大.每次 ...

  7. Codeforces Round #520 (Div. 2) Solution

    A. A Prank Solved. 题意: 给出一串数字,每个数字的范围是$[1, 1000]$,并且这个序列是递增的,求最多擦除掉多少个数字,使得别人一看就知道缺的数字是什么. 思路: 显然,如果 ...

  8. Codeforces Round #520 (Div. 2) D. Fun with Integers

    D. Fun with Integers 题目链接:https://codeforc.es/contest/1062/problem/D 题意: 给定一个n,对于任意2<=|a|,|b|< ...

  9. Codeforces Round #520 (Div. 2) C. Banh-mi

    C. Banh-mi time limit per test:1 second memory limit per test:256 megabytes 题目链接:https://codeforc.es ...

随机推荐

  1. [转]nodejs日期时间插件moment.js

    本文转自:https://blog.csdn.net/dreamer2020/article/details/52278478 问题来源js自带的日期Date可以满足一些基本的需求,例如格式化.时间戳 ...

  2. vuex的用法

    https://segmentfault.com/a/1190000015782272

  3. Django之路由分发和反向解析

    一.路由分发: 路由分发是指:总路由不再直接做路由与视图函数的对应关系,而是将获取的路由分发给下面的app去处理对应关系 from django.conf.urls import url,includ ...

  4. CSS文本属性 文本阴影text-shadow 换行 text-overflow

    div{             font-size: 20px;             text-shadow: 5px 5px 5px #333; text-shadow: 10px 10px ...

  5. 两种方法实现asp.net方案的前后端数据交互(aspx文件、html+ashx+ajax)

    一个HTML页面只能显示HTML代码信息,不能与数据库进行数据的交互.asp.net方案提供了网页与数据库交互的方法,这里举出两种:①aspx文件 ②ashx文件+ajax技术 一.创建数据库 这里以 ...

  6. Glide的 java.lang.RuntimeException: Expected instanceof GlideModule, but found:X.GlideModule@2e4554f

    问题一 在添加过混淆规则后,App打包的时候,发现报错了 java.lang.RuntimeException: Expected instanceof GlideModule, but found: ...

  7. Android探究之View的绘制流程

    Android中Activity是作为应用程序的载体存在,代表着一个完整的用户界面,提供了一个窗口来绘制各种视图,当Activity启动时,我们会通过setContentView方法来设置一个内容视图 ...

  8. 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile

    原因: 由于项目所需jdk版本和你当前使用的jdk版本不一致导致的,因为我项目的pom.xml中定义了java版本为1.8,但是我实际idea中run这个项目却是1.7 解决方案: 更换当前jdk版本 ...

  9. mysql export mysqldump version mismatch upgrade or downgrade your local MySQL client programs

    I use MySQL Community Edition and I solved this problem today. goto https://dev.mysql.com/downloads/ ...

  10. arts打卡 从排序数组中删除重复项

    Algorithm 从排序数组中删除重复项     给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组 ...