设这个一元二次方程的两个解为x,y;
根据韦达定理:x+y=-b/a,x*y=c/a;
所以x+y=p,x*y=q;
因此x+y+x*y=k;
式子变化一下:(x+1)(y+1)=k+1
所以我们只要求k+1的因子,判断一下即可;
#include <iostream>
#include <cstring>
#include <algorithm>
#define int long long
using namespace std;
signed main()
{
int k;
cin>>k;
k++;
for(int i=2;i<=k/i;i++)
{
if(k%i==0)
{
int u=k/i;
int a=i-1,b=u-1;
if(a+b+a*b==k-1)
{
cout<<a+b<<" "<<a*b;
return 0;
}
}
}
cout<<-1<<'\n';
return 0;
}