题目大意
给定 \(a\) 和 \(b\),如果 \(a^b\) 的值不超过 \({10}^9\),则输出 \(a^b\) 的值,否则输出 -1
;
解题思路
特判即可:
- 如果 \(a^b\) 的值不超过 \({10}^9\),用快速幂模拟。
- 否则,输出
-1
。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline ll poww(ll n,ll m){
ll ans=1,z=n;
for(;m;m>>=1){
if(m&1) ans*=z;
z*=z;
}
return ans;
}
ll a,b;
int main(){
cin>>a>>b;
if(pow(a,b)<=1e9){
cout<<poww(a,b);
return 0;
}
else cout<<"-1";
return 0;
}
标签:P8813,题解,ll,long,2022,ans,CSP
From: https://www.cnblogs.com/zzyblog0619/p/17003640.html