关于我在你谷上测出来70而实际爆零了这件事(pj t2)
  • 板块灌水区
  • 楼主Hoks
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/11/7 21:40
  • 上次更新2023/10/27 03:52:35
查看原帖
关于我在你谷上测出来70而实际爆零了这件事(pj t2)
551100
Hoks楼主2022/11/7 21:40

rt,有大佬能帮忙看看为什么爆零吗

#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
int n,e,ans,flag;
int read()
{
	char c=getchar();int x=0;
	while(!isdigit(c)) c=getchar();
	while(isdigit(c)) x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return x;
}
void sc(int x)
{
	if(x<0) putchar('-'),x=-x;
	if(x>9) sc(x/10),putchar(x%10+'0');
	if(x<=9) putchar(x+'0');
}
bool check(int mid)
{
	int x=n/mid;
	if(n-e+2<mid+x) return true;
	if(n-e+2==mid+x&&n%mid==0){ans=mid,flag=0;return true;}
	if(n-e+2>mid+x) return false;
	return true; 
}
signed main()
{
	freopen("decode.in","r",stdin);
	freopen("decode.out","w",stdout);
	t=read();
	while(t--)
	{
		n=read(),e=read()*read();
		if(e>n) printf("NO"),puts("");
		flag=1;
		int l=1,r=sqrt(n)+1;
		while(l<=r)
		{
			int mid=(l+r)/2;
			if(check(mid)){if(!flag){sc(ans),putchar(' '),sc(n/ans),puts(" ");}l=mid+1;}
			else r=mid-1;
		}
		if(flag) printf("NO"),puts("");
	}
	return 0;
}

2022/11/7 21:40
加载中...