听灌多,悬关
  • 板块灌水区
  • 楼主PF_flute
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/9/13 19:35
  • 上次更新2024/9/13 23:14:50
查看原帖
听灌多,悬关
1110209
PF_flute楼主2024/9/13 19:35

P8814 二分 60pts

WA on #1 #2 #5 #6 #9 #10 #11 #12 #15 #16

代码:

#include<bits/stdc++.h>
using namespace std;
long long k,n,e,d,ed;
int main(){
	scanf("%lld",&k);
	while(k--){
		scanf("%lld%lld%lld",&n,&e,&d);
		ed=e*d;
		int flag=1;
		long long l,r,mid;
		if(n<n-ed+2){
			l=1,r=sqrt(n);
			while(l<=r){
				mid=(l+r)/2;
				if(mid+n/mid==n-ed+2)
					break;
				else if(mid+n/mid<n-ed+2)
					l=mid+1;
				else
					r=mid-1;
			}
			if(n%mid==0&&mid+n/mid==n-ed+2)
				printf("%lld %lld\n",mid,n/mid);
			else
				printf("NO\n");
		}
		else{
			l=1,r=(n-ed+2)/2;
			while(l<=r){
				mid=(l+r)/2;
				if(mid*(n-ed+2-mid)==n)
					break;
				else if(mid*(n-ed+2-mid)<n)
					l=mid+1;
				else
					r=mid-1;
			}
			if(mid*(n-ed+2-mid)==n)
				printf("%lld %lld\n",mid,n-ed+2-mid);
			else
				printf("NO\n");
		}
	}
	return 0;
}
2024/9/13 19:35
加载中...