#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int find (unsigned long long a,unsigned long long b,unsigned long long c)
{
unsigned long long m,n;
unsigned long long m_and_n=a+2-(b*c);
unsigned long long max=floor(m_and_n/2);
if(m_and_n<=0)
{
printf("NO\r\n");
return 0;
}
for (m=1;m<=max;m++)
{
n=m_and_n-m;
if(m*n==a)
{
cout<<m<<' '<<n<<endl;
return 0;
}
}
printf("NO\r\n");
return 0;
}
struct problem
{
unsigned long long a;
unsigned long long b;
unsigned long long c;
}q[100005];
int main()
{
unsigned long long a,b,c;
unsigned long long k;
cin>>k;
for (unsigned long long i=0;i<k;i++)
{
cin>>q[i].a>>q[i].b>>q[i].c;
}
for (unsigned long long i=0;i<k;i++)
{
find(q[i].a,q[i].b,q[i].c);
}
return 0;
}
一半TLE,不用二次方程和韦达超时,服了