Pagini recente » Cod sursa (job #1326992) | Cod sursa (job #2931880) | Cod sursa (job #2487409) | Cod sursa (job #2529675) | Cod sursa (job #1342285)
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream f("ecuatie.in"); ofstream g("ecuatie.out");
int a,b,c,k,na,nc,nr,av[10000],cv[10000];
void detdiv(int x, int &n, int y[])
{ int s=x;
if(s<0) s=-s;
int i,t=(int)sqrt((double)s);
n=0;
if(t*t==x) y[++n]=t, t--;
for(i=1;i<=t;i++)
if(s%i==0) {n+=2; y[n-1]=i; y[n]=s/i;}
for(i=1;i<=n;i++) y[n+i]=-y[i];
n=n+n;
sort(y+1,y+n+1);
}
int main()
{ f>>a>>b>>c>>k;
detdiv(a,na,av); detdiv(c,nc,cv);
for(int i=1;i<=na;i++)
{ int p=a/av[i];
for(int j=1; j<=nc; j++)
{ int q=c/cv[j];
if(cv[j]*p+av[i]*q==b)
{ nr++;
if(nr==k)
{ g<<"(";
if(av[i]==-1) g<<"-"; else {if(av[i]!=1) g<<av[i];};
g<<"x";
if(cv[j]>=0) g<<"+";
g<<cv[j]<<")(";
if(p==-1) g<<"-"; else {if(p!=1) g<<p;};
g<<"x";
if(q>=0) g<<"+";
g<<q<<")\n";
}
}
}
}
if (nr<k) g<<"-1";
g.close(); return 0;
}