Solution
利用数据溢出和pow。
也许数据溢出容易WA或RE,但是这道题是完全可以利用数据溢出的。
也不用担心 pow
的速度,不会T掉。
求
a
b
a^b
ab,超过 1e9
范围就输出-1, int
类型范围是 1e10
。超过 int
类型范围会变成一个负数或0,设
c
c
c 为
p
o
w
e
r
power
power 后的值,所以我们可以写c>0&&c<=1e9
就输出
c
c
c,否则输出-1
。
因为数据点太水,你可以只判断c>0
。
AC Code
可AC但不太保险的做法:
#include<iostream>
#include<cmath>
using namespace std;
int a,b,c;
int main(){
cin>>a>>b;
c=pow(a,b);
cout<<(c>0?c:-1);
return 0;
}
可以AC又保险做法:
#include<iostream>
#include<cmath>
using namespace std;
int a,b,c;
int main(){
cin>>a>>b;
c=pow(a,b);
cout<<(c>0&&c<=1e9?c:-1);
return 0;
}