O(1)数学方法,700ms,人麻了
查看原帖
O(1)数学方法,700ms,人麻了
527298
Silurus_asotus楼主2022/11/13 14:06
#include<iostream>
#include<cmath>
#include<cstdio>
#define int long long
using namespace std;
main(void)
{
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	std::cout.tie(0);
	int k;
	std::cin>>k;
	while(k--)
	{
		int n,e,d;
		std::cin>>n>>e>>d;
		int ji=n;
		int he=n-e*d+2;
		if(he<=1)
		{
			std::cout<<"NO"<<endl;
			continue;
		}
		if((int)sqrt(ji)>(he)/2)
		{
			std::cout<<"NO"<<endl;
			continue;
		}
		int cha=(int)sqrt(he*he-4*ji);
		int p=(he-cha)/2;
		int q=(he+cha)/2;
		if(p+q!=he||p*q!=ji)
		{
			std::cout<<"NO"<<endl;
			continue;
		}
		std::cout<<p<<" "<<q<<endl;
	}
	return 0;
} 
2022/11/13 14:06
加载中...