求调,90pts
查看原帖
求调,90pts
513901
封禁用户楼主2022/11/7 20:01
#include<bits/stdc++.h>
using namespace std;
int n,m,res,flag;
int qpow(int a,int b) {
 int ans=1;
 while(b) { 
  if(b&1)ans=ans*a;
  if(ans>1000000000) {
   flag=1;
   return 0;
  }
  if((a>1000000000)&&b) {//保险起见(不太确定)我重复写了两个。
   flag=1;
   return 0;
  }
  b>>=1;
  a=a*a;
  if((a>1000000000)&&b) {
   flag=1;
   return 0;
  }
 }
 return ans;
}
int main() {
 cin>>n>>m;
 if(n==1) {
  cout<<1;
  return 0;
 }
 if(n>1000000000) {
  cout<<-1;
  return 0;
 }
 res=qpow(n,m);
 if(res<0) {
  cout<<-1;
  return 0;
 }
 if(!flag) {
  cout<<res;
  return 0;
 } else {
  cout<<-1;
  return 0;
 }
}
2022/11/7 20:01
加载中...