Cod sursa(job #145458)

Utilizator luca_iliesiuluca ilieisiu luca_iliesiu Data 28 februarie 2008 20:39:54
Problema Ecuatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<stdio.h>
int main()
{int a,b,c,k,n,m,i,j,aux,x[1000],y[1000],b2,a2,c2;
 freopen("ecuatie.in","r",stdin);
 freopen("ecuatie.out","w",stdout);
 scanf("%d%d%d%d",&a,&b,&c,&k);
 n=0;
 m=0;
 if(a<0) a2=(-1*a); else a2=a;
 for(i=a2;i>=1;i--)
    if (a2%i==0) {n++;
			   x[n]=(-1*i);
			                }
 for(i=1;i<=a2;i++)
	if (a2%i==0) {n++;
			    x[n]=i;
			    }
 if (c<0) c2=(-1*c); else c2=c;	
 for(i=c2;i>=1;i--)
    if(c2%i==0) {m++;
               y[m]=(-1*i);
              }
 for(i=1;i<=c2;i++)
	if(c2%i==0) {m++;
                y[m]=i;} 

	aux=0;
 for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
	   {b2=(x[i]*c/y[j])+(a/x[i]*y[j]);
	    if (b2==b) aux++;	    
		if (aux==k) {if ((c>0)&&(y[i]<0)) printf("(%dx%d)(%dx%d)",x[i],y[j],a/x[i],c/y[j]); 
                        else if((c<0)&&(y[i]<0)) printf("(%dx%d)(%dx+%d)",x[i],y[j],a/x[i],c/y[j]);
  		                  else if (c<0) printf("(%dx+%d)(%dx%d)",x[i],y[j],a/x[i],c/y[j]);
						    else printf("(%dx+%d)(%dx+%d)",x[i],y[j],a/x[i],c/y[j]);
					i=n;j=m;}
		}
	


if (aux<k) printf("-1");

	return 0;   
}