题解:P11747 「TPOI-1A」鞋子特大号
题解:P11747 「TPOI-1A」鞋子特大号
题目思路
对于第一种操作:
- 首先观察样例 ,因为我们选择了 使 。分解质因数得:
- 于是我们会发现,对于第一种操作,实质上是分解质因数后取相同的质因数部分再组成一个新数。也就是说,我们要不断删去 的质因数。显然每次删去的个数为 时最优。此时答案为 。
对于第二种操作:
- 同上文, 的质因子个数应当为 。
- 显然为了使这个数最小,这个数中的所有质因子当且仅当它们都为 。
- 因此答案为 。
所以我们可以借助 个函数来实现。即质数筛、操作一对应的函数和操作二对应的函数。
代码实现
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
ll T,a,b;
bool szs(ll x){
if(x<=1) return 0;
for(int i=2;i<=sqrt(x);i++){
if(x%i==0) return 0;
}
return 1;
}
void op1(ll b){
ll cnt=0;
for(int i=2;i<=sqrt(b);i++){
if(b%i==0&&szs(i)==1){
while(b%i==0) cnt++,b=b/i;
if(b==1) {
cnt=cnt-1;
break;
}
}
}
cout<<cnt<<"\n";
}
void op2(ll b){
ll ans=1;
for(ll i=1;i<=b+1;i++){
ans=ans*2;
}
cout<<ans<<"\n";
}
int main(){
cin>>T;
while(T--){
cin>>a>>b;
if(a==1) op1(b);
if(a==2) op2(b);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?