Cod sursa(job #248255)

Utilizator agabrieiulianAntoniu Gabriel Iulian agabrieiulian Data 25 ianuarie 2009 12:08:52
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <fstream>
using namespace std;

long int **c,**d;

long int cmmdc(long int a, long int b)  
 {  long int aux=0;  

	if(a==b) return a;
   
    while (a!=b && aux!=1)  
    if (a<b) { aux=b-a;  
           b=b-a;  
             }  
       else  { aux=a-b;  
               a=a-b;  
             }   
    return aux;  
} 

int find(long int val1,long int val2,long int i, long int j)
{ int ret=0;
  long int ii,jj;
  for(ii=0;ii<i;ii++)
	  for(jj=0;jj<j;jj++)
		  if(val1==c[ii][jj] && val2==d[ii][jj])
			  return 1;
  return 0;
}


void reducere(long int **a, long int **b, long int n)
{
	int aux,i,j;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{	aux=cmmdc(a[i][j],b[i][j]);
			c[i][j]=a[i][j]/aux;
			d[i][j]=b[i][j]/aux;
		}

}

int main(void)
{
	
	long int **a,**b,n,i,j;
	long int count=0,sum;

	ifstream datein("fractii.in");
	ofstream dateout("fractii.out");

	datein>>n;

	a=(long int**)malloc(n*sizeof(long int*));
	b=(long int**)malloc(n*sizeof(long int*));
	c=(long int**)malloc(n*sizeof(long int*));
	d=(long int**)malloc(n*sizeof(long int*));

	for(i=0;i<n;i++)
	{	
		a[i]=(long int*)malloc(n*sizeof(long int));
		b[i]=(long int*)malloc(n*sizeof(long int));
		c[i]=(long int*)malloc(n*sizeof(long int));
		d[i]=(long int*)malloc(n*sizeof(long int));
	}

	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{a[i][j]=i+1;
		 b[i][j]=j+1;
		}

	reducere(a,b,n);

	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			if(find(c[i][j],d[i][j],i,j)==0) count++;

	
	/*for(i=0;i<n;i++)
	{for(j=0;j<m;j++)
			dateout<<a[i][j]<<" ";
	dateout<<endl;
	}*/


	dateout<<count;

	datein.close();
	dateout.close();

return 0;
}