Cod sursa(job #1138839)

Utilizator irinel132Ghita Costinel Irinel irinel132 Data 10 martie 2014 17:33:04
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>

struct fractie {
	int x, y;
};

fractie * sir;
FILE * f;
int n, nn, numar= 0;






int valid(int poz, int x, int y) {
	int r= 1;
	for (int i= 0; i < poz; i++)
		if (sir[i].x== x && sir[i].y== y)
			r= 0;
	return r;
};


void rezolvare(int poz, int a, int b) {
	int s, x= a, y= b, z= a<b? b:a;
	do {
	s= 0;
	for (int i= 2; i <= z; i++)
		if (x%i== 0 && y%i== 0) {
			x/= i; y/= i;
			s= 1;
		}
	} while (s== 1);

	if (valid(poz, x, y)== 1) {
		sir[poz].x= x; sir[poz].y= y;
		numar++;
		if (b < n) 	rezolvare(poz+1, a, b+1);
		else if (a < n) rezolvare(poz+1, a+1, 1);
	}
	else {
		if (b < n) 	rezolvare(poz, a, b+1);
		else if (a < n) rezolvare(poz, a+1, 1);
	}
};



int main() {
	f= fopen("fractii.in", "r");
		fscanf(f, "%d", &n);
	fclose(f);
	nn= n*n;
	sir= new fractie[nn];

	rezolvare(0, 1, 1);

	f= fopen("fractii.out", "w");
		fprintf(f, "%d\n", numar);
	for (int i= 0; i < numar; i++)
		fprintf(f, "%d / %d\n", sir[i].x, sir[i].y);
	fclose(f);

	return 0;
}