Cod sursa(job #83795)

Utilizator pitbullpitbulll pitbull Data 11 septembrie 2007 21:53:38
Problema Fractii Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.74 kb
# include <stdio.h>
# include <stdlib.h>
# define MAX 1000
int saved[MAX][MAX];

int N,result=1;
int cmmdc(int,int);

int main (){
	FILE *in=fopen("fractii.in","r");
	fscanf(in,"%d",&N);
	fclose(in);
	int i,j;
	
	for (i=0;i<MAX;i++)
		for (j=0;j<MAX;j++)
			saved[i][j]=0;
			
	int p;		
	for (i=2;i<=N;i++)
		for (j=1;j<i;j++){
			p=cmmdc(i,j);
			if(i<1000&j<1000)
				saved[i][j]=p;
				
			if(p==1)
					result+=2;
			}
	;
	
	FILE *out=fopen("fractii.out","w");
	fprintf(out,"%d",result);
	fclose(out);
	return 0;
}


int cmmdc ( int a,int b){
	if(a<1000&&b<1000)
		if(saved[a][b])
			return saved[a][b];	
	if(a==0)
		return b;
	if(b==0) 
		return a;
	if(a>b) 
		return cmmdc(a-b,b);
	return cmmdc(b-a,a);
}