Pagini recente » Cod sursa (job #154794) | Cod sursa (job #2407721) | Cod sursa (job #2401377) | Cod sursa (job #2020884) | Cod sursa (job #109421)
Cod sursa(job #109421)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int nr,m,a,b,c,k,i,j,n;
int v[100],v2[100];
void da()
{
int i,j,x,t=int(sqrt(a));
if (t*t==a)
{
m=1;
v[m]=t;
t--;
}
for (i=1; i<=t; i++)
if ((a%i)==0)
{
m+=2;
v[m-1]=i;
v[m]=a/i;
}
for (i=1; i<=m; i++)
v[m+i]=-v[i];
m=m+m;
for (i=1; i<=m-1; i++)
for (j=i; j<=m; j++)
if (v[i]>v[j])
{
x=v[i];
v[i]=v[j];
v[j]=x;
}
}
void dc()
{
int i,j,x,s=c;
if (s<0) s=s*(-1);
int t=int(sqrt(s));
if (t*t==n)
{
t--;
n=1;
v2[n]=t+1;
}
for (i=1; i<=t; i++)
if ((s%i)==0)
{
n+=2;
v2[n-1]=i;
v2[n]=s/i;
}
for (i=1; i<=n; i++)
v2[n+i]=-v2[i];
n=n+n;
for (i=1; i<=n-1; i++)
for (j=i; j<=n; j++)
if (v2[i]>v2[j])
{
x=v2[i];
v2[i]=v2[j];
v2[j]=x;
}
}
int main()
{
freopen("ecuatie.in","r",stdin);
freopen("ecuatie.out","w",stdout);
scanf("%d%d%d%d",&a,&b,&c,&k);
da();
dc();
if (k>m*n)
{
printf("-1\n");
return 0;
}
nr=0;
for (i=1; i<=m; i++)
{
int p=int(a/v[i]);
for (j=1; j<=n; j++)
{
int q=int(c/v2[j]);
if (v2[j]*p+v[i]*q==b) nr++;
if (nr==k)
{
printf("(");
if (v[i]==-1) printf("-x");
else if (v[i]==1) printf("x");
else printf("%dx",v[i]);
if (v2[j]<0) printf("%d)",v2[j]);
else printf("+%d)",v2[j]);
printf("(");
if (p==-1) printf("-x");
else if (p==1) printf("x");
else printf("%dx",p);
if (q<0) printf("%d)",q);
else printf("+%d)",q);
return 0;
}
}
}
if (nr<k) printf("-1\n");
return 0;
}