A695.[CSP-J 2022] 乘方
2026-08-19 21:54:14
发布于:江苏
5阅读
0回复
0点赞
点个关注吧!求求了🙏
"对于 100% 的数据,保证 1≤a,b≤10^9"
本题涉及逆天天文单位的巨大数字,硬乘的话肯定是不行( ̄_, ̄ )
那我们来设一个极限情况,当b=30时,可以发现,如果a>=2,就已经大于10^9了
因此我们只需要做一个判断,防止b>=30时把电脑炸坏💥🖥️
具体代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a,b,powe=0;
cin>>a>>b;
if(b<30){ //说明在安全范围内,可以正常使用pow
if(pow(a,b)<=1000000000) cout<<long(pow(a,b));
else cout<<-1;
}else{//在安全范围外
int x=1;
for(int i=1;i<=b;i++){
x*=a;//注意重点📌,每次乘a,如果结果大于10^9,就输出-1退出循环
if(x>1000000000){
cout<<-1;
return 0;
}
}
cout<<int(pow(a,b));
}
return 0;
}
CSP的入门题还是太逆天了
这里空空如也








有帮助,赞一个