设这个一元二次方程的两个解为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;
}