爆0求助
查看原帖
爆0求助
542893
tiaotiao0830楼主2022/11/30 20:31
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
	long long n = 0,k = 0,e = 0,d = 0,l = 0,r = 0,mid = 0,flag = 0,cnt = 0;
	cin >> k;  //输入次数 
	
	for(int i = 0;i < k;i++)
	{
		flag = 0;
		cnt = 0;
		cin >> n >> e >> d;   //初始化 
		
		l = 1;
		r = sqrt(n);
		
		while(l <= r)
		{
			mid = (r - l) / 2 + l;
			if(n % mid != 0)
			{
				r = mid - 1;
			}
			
			else if(mid + (n / mid) == n - e * d + 2)
			{
				cout << min(mid,(n / mid)) << ' ' << max(mid,(n / mid)) << endl; 
				flag = 1;
				break;
			}
			
			else if(mid + (n / mid) < n - e * d + 2)
			{
				r = mid - 1;
			}
			
			else
			{
				l = mid + 1;
			}         //二分 
			
		}
		if(flag == 0)
		{
			cout << "NO" << endl;
		}     //无解 
	}
	return 0;
}
2022/11/30 20:31
加载中...