Pagini recente » Cod sursa (job #2118517) | Cod sursa (job #775718) | Cod sursa (job #670250) | Cod sursa (job #455716) | Cod sursa (job #376125)
Cod sursa(job #376125)
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
long long a,b,c,k,i,j,n,nr,delt;
float x,y,z;
struct nod
{ int p1,p2,q1,q2;
}sir[50000];
void findq(int p1,int p2)
{
long double q11,q12,q21,q22;
long long x1=(long long)(x);//printf("%d\n",x1);
{ q11=(b+x1)/(2*p2); //printf("%f\n",q11);
if(int(q11)==q11) { q12=c/q11;//printf("%f \n\n",q12);
if(int(q12)==q12&&q11*q12==c&&p1*q12+p2*q11==b)
{ sir[++nr].p1=p1;
sir[nr].p2=p2;
sir[nr].q1=int(q11);
sir[nr].q2=int(q12);
sir[++nr].p1=p2;
sir[nr].p2=p1;
sir[nr].q1=int(q12);
sir[nr].q2=int(q11);
}
}
q21=(b-x1)/(2*p2);
if(int(q21)==q21) { q22=c/q21;
if(int(q22)==q22&&q21*q22==c&&p1*q22+p2*q21==b)
{ sir[++nr].p1=p1;
sir[nr].p2=p2;
sir[nr].q1=int(q21);
sir[nr].q2=int(q22);
sir[++nr].p1=p2;
sir[nr].p2=p1;
sir[nr].q1=int(q22);
sir[nr].q2=int(q21);
}
}
}
}
bool comp(nod a,nod b)
{
if(a.p1!=b.p1) return a.p1<b.p1;
return a.q1<b.q1;
}
void afisp(int x)
{ if(x!=1){ if(x<0) { printf("-");
x=-x;
}
if(x!=1) printf("%d",x);
}
}
void afisq(int x)
{ if(x>0) printf("+");
if(x!=1){ if(x<0) { printf("-");
x=-x;
}
if(x!=1) printf("%d",x);
}
}
int main()
{
freopen("ecuatie.in","r",stdin);
freopen("ecuatie.out","w",stdout);
scanf("%lld %lld %lld %lld",&a,&b,&c,&k);
delt=b*b-4*a*c;
x=sqrt(delt);
int x1=int(x);
if(x1*x1!=delt) { printf("-1\n");
fclose(stdin);
fclose(stdout);
return 0;
}
int n=int(sqrt(a));
for(i=1;i<=n;++i) if(a%i==0) { findq(i,a/i);
findq(-i,-a/i);
}
sort(sir+1,sir+nr+1,comp);
int r=0;
for(i=1;i<=nr;++i) if(sir[i].p1!=sir[i+1].p1 || sir[i].p2!=sir[i+1].p2 || sir[i].q1!=sir[i+1].q1 || sir[i].q2!=sir[i+1].q2)
{ sir[++r]=sir[i];
// printf("%d %d %d %d\n",sir[r].p1,sir[r].q1,sir[r].p2,sir[r].q2);
}
if(k>r) { printf("-1\n");
fclose(stdin);
fclose(stdout);
return 0;
}
printf("(");
afisp(sir[k].p1);
printf("x");
afisq(sir[k].q1);
printf(")(");
afisp(sir[k].p2);
printf("x");
afisq(sir[k].q2);
printf(")\n");
fclose(stdin);
fclose(stdout);
return 0;
}