Pagini recente » Cod sursa (job #2216377) | Cod sursa (job #258412) | Cod sursa (job #1783617) | Cod sursa (job #1273397) | Cod sursa (job #1138841)
#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);
fclose(f);
return 0;
}