30分求助,6TLE,1WA
查看原帖
30分求助,6TLE,1WA
637073
wujingfey楼主2022/10/30 16:26

用的二分来做,复杂度1e7为啥会T啊

#include<bits/stdc++.h>
#define int long long
using namespace std;
int k;
int solve(int l,int r,int sum,int p){
	int x=(l+r)/2;
	int y=sum-x;
	if(l==r){
		if(x*y==p) return x;
		else return -1;
	}
	if(p==x*y) return x;
	else if(x*y<p) return solve(x+1,r,sum,p);
	else if(x*y>p) return solve(l,x-1,sum,p);
}
signed main(){
	scanf("%lld",&k);
	for(int cas=1;cas<=k;cas++){
		int a=0,b=0,c=0;
		scanf("%lld%lld%lld",&a,&b,&c);
		int m=a-b*c+2,a1,a2;
		a1=solve(1,m,m,a);
		a2=m-a1;
		if(a1==-1) printf("NO\n");
		else printf("%lld %lld\n",a1,a2);
	}
	return 0;
}

2022/10/30 16:26
加载中...