求助,二分本地运行能过,提交RE
查看原帖
求助,二分本地运行能过,提交RE
1284861
luogudashe楼主2024/7/14 18:32

本来看出了可以在0到a的区间里枚举n和m,但是O(n^3)只过了前面两个测试点,后面想到枚举m的时候可以二分查,写完之后本地调试能过,提交就RE了,求大佬debug

#include <bits/stdc++.h>
using namespace std;
bool erfeng(long long n,long long a,long long c,long long le,long long ri,bool f)
{
	if(le>=ri)return 0;
	long long m=(le+ri)/2+1;
    if(c==(a/n)/m)
	{
	   printf("%lld\n",a/n);
       return 1;
    }
    if(c<(a/n)/m)erfeng(n,a,c,m+1,ri,f);
    else if(c>(a/n)/m)erfeng(n,a,c,le,m-1,f);
}
void js()
{
	int t;
	cin>>t;
	long long a,b,c;
	bool f=0;
	for(int i=1;i<=t;i++)
	{
		scanf("%lld%lld",&a,&c);
		f=0;
		for(long long n=1;n<=a;n++)
		{
			f=erfeng(n,a,c,0,a,f);
			if(f==1)break;
		}
		if(f==0)printf("%d\n",-1);
	}
}
int main()
{
	js1();
	return 0;
}
2024/7/14 18:32
加载中...