全WA+TLE,过样例了,求优化
查看原帖
全WA+TLE,过样例了,求优化
757326
KanaAqua_qwq楼主2024/10/7 11:55
#include<bits/stdc++.h>
using namespace std;
unsigned long long n,a[1000005];
unsigned long long tot=1;
unsigned long long ans;
int check(unsigned long long num){
	if(num<1)return 0;
	unsigned long long left=1;
	unsigned long long right=num/2;
	while(left<=right){
		unsigned long long mid=left+(right-left)/2;
		unsigned long long square=mid*mid;
		if(square==num)return 1;
		else if(square<num){
			left=mid+1;
		}else{
			right=mid-1;
		}
	}
	return 0;
}
int main() {
	cin>>n;
	for(int i=1; i<=n; i++) {
		cin>>a[i];
	}
	for(int i=1; i<=n; i++) {
		for(int j=i; j<=n; j++) {
			for(int k=i; k<=j; k++){
				tot*=a[k];
			}
			if(check(tot))ans++;
			tot=1;
		}
	}
	cout<<ans<<endl;
	return 0;
}
2024/10/7 11:55
加载中...