#8WA 求调
查看原帖
#8WA 求调
569971
smqa楼主2022/10/29 19:24

我自认为已经在循环里特判了ans爆long long的问题,但感觉又不大对,因为乘一次就会爆,不知道怎么改,特判1了,代码如下:

#include<cstdio>
#include<iostream>
using namespace std;
bool flag=1;
unsigned long long f(long long a,long long b){
	unsigned long long ans=1;
	while(b){
		if(b&1) ans=ans*a;
		a=a*a;
		b/=2;
		if(ans>1e9){
			printf("-1");
			flag=0;
			return 0;
		}
	}
	return ans;
}
int main(){
	long long a,b;
	scanf("%lld%lld",&a,&b);
	if(a==1){
		printf("1");
		return 0;
	}
	long long k=f(a,b);
	if(flag==0) return 0;
	else printf("%lld",k);
	return 0;
}
```cpp
2022/10/29 19:24
加载中...