#include <bits/stdc++.h>
using namespace std;
unsigned long long ans,b,a;
bool flag=false;
int f(unsigned long long k)
{
if(k==0)
return 0;
if(flag)
return 0;
if(k%2==0)
{
f(k/2);
if(flag)
return 0;
if(ans*ans>1000000000)
{
flag=true;
cout<<-1;
return 0;
}
ans=ans*ans;
}
else
{
f(k-1);
if(flag)
return 0;
if(ans*a>1000000000)
{
flag=true;
cout<<-1;
return 0;
}
ans=ans*a;
}
return 0;//A
}
int main()
{
cin>>a>>b;
ans=1;
f(b);
if(!flag)
cout<<ans;
return 0;
}
我发现A处不加return 0会全部MLE,这是为什么???