关于快速幂是否是此题正解
查看原帖
关于快速幂是否是此题正解
399686
AnnieWu楼主2022/11/12 16:26

(我不知道是不是我快速幂写错了,若是我的问题还请各位大佬指出谢谢)

下为考场代码(已经注释掉freopen)

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define max_val 1000000000
ll a,b;
ll quickpow(ll base, ll p){
    ll ans=1;
    while(p){
        if(p&1) ans*=base;
        if(ans>max_val) return -1;
        base*=base;
        p>>=1;
    }
    return ans;
}
int main(){
   // freopen("pow.in","r",stdin);
  //  freopen("pow.out","w",stdout);
    scanf("%lld%lld",&a,&b);
    ll qp=quickpow(a,b);
    if(qp!=-1&&qp<=max_val) printf("%lld",qp);
    else printf("-1");
    return 0;
}
2022/11/12 16:26
加载中...