Pagini recente » Cod sursa (job #1838254) | Cod sursa (job #2052207) | Cod sursa (job #1941142) | Cod sursa (job #2734719) | Cod sursa (job #1025404)
#include<cmath>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int Nr,nr,i,j,A,B,C,auxC,Poz,sol[10];
vector < int > v;
vector < int >::iterator it;
void solveeq2(long long A,long long B,long long C)
{
long long dint,X1,X2;
double x1,x2,delta=(double)1LL*B*B-1LL*4*A*C;
nr=0;
if(delta<0) return ;
delta=pow(delta,0.5);
x1=(double)((double)-B-delta)/(2*A);X1=(long long)x1;
x2=(double)((double)-B+delta)/(2*A);X2=(long long)x2;
if(1LL*X1*X1*A+X1*B+C==0&&auxC%X1==0){nr++;sol[nr]=X1;}
if(1LL*X2*X2*A+X2*B+C==0&&auxC%X2==0&&X1!=X2){nr++;sol[nr]=X2;}
}
void afispar(int P1,int Q1)
{
printf("(");
if(P1==-1) printf("-x");
else
if(P1==1) printf("x");
else printf("%dx",P1);
if(Q1<0) printf("%d",Q1);
else printf("+%d",Q1);
printf(")");
}
void afis(int P1,int Q1)
{
int P2=A/P1,Q2=C/Q1;
afispar(P1,Q1);
afispar(P2,Q2);
printf("\n");
}
int main()
{
freopen("ecuatie.in","r",stdin);
freopen("ecuatie.out","w",stdout);
scanf("%d",&A);
scanf("%d",&B);
scanf("%d",&C);
auxC=C;
scanf("%d",&Poz);
if(A<0){A*=-1;Nr=-1;}
for(i=1;i*i<A;i++)if(A%i==0){v.push_back(i);v.push_back(A/i);v.push_back(-i);v.push_back(-A/i);}if(i*i==A){v.push_back(i);v.push_back(-i);}
if(Nr==-1) A*=-1;
sort(v.begin(),v.end());
Nr=0;
for(it=v.begin();it!=v.end();it++)
{
solveeq2(A/ *it,-B,(long long)*it*C);
Nr+=nr;
sort(sol+1,sol+nr+1);
//for(j=1;j<=nr;j++)
// afis(*it,sol[j]);
if(Nr>=Poz)
{
if(Nr==Poz) afis(*it,sol[nr]);
else afis(*it,sol[1]);
return 0;
}
}
printf("-1\n");
return 0;
}