RT,下面的代码可以通过
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll inf=2147483647;
void qpow(ll a,ll b)
{
ll res=1;bool flag=true;
while(b)
{
//cout<<"a="<<a<<",b="<<b<<",res="<<res<<endl;
if(b&1)
{
res=res*a;
if(res>inf)
{
//cout<<"res="<<res<<endl;
puts("-1");
flag=false;
break;
}
}
a=a*a;
if(a>inf && b>1)
{
//cout<<"a="<<a<<endl;
puts("-1");
flag=false;
break;
}
b>>=1;
}
if(!flag) return ;
printf("%lld\n",res);
}
int main()
{
long long a,b;
scanf("%lld%lld",&a,&b);
//cout<<inf<<endl;
qpow(a,b);
return 0;
}
注意到 inf=2147483647,就是说只有在 大于 2147483647 才会输出 -1
然而他过了。
subtask1,2 都过了……