这道题就是用快速幂的算法,但是如果结果超过1e9的时候就要返回-1了,同时,我们也要防止a溢出,a大于1e9的时候及时退出,但是注意,我们不能在a*=a之后判断,毕竟,如果这是最后一次循环的话,结果可能已经正好存在ret里面了,这时候我们 突然返回可能会破坏我们的结果,这下面才是我们的正确代码
#include <iostream>
using namespace std;
typedef long long ll;
ll a,b;//a的b次幂ll quickcalc()
{ll ret=1;while(b){if(a>1e9) return -1; if(b&1){ret*=a; } if(ret>1e9) return -1;b>>=1;a*=a;}return ret;
}
int main()
{cin >> a >> b;ll r = quickcalc();cout << r << endl;return 0;
}