Cod sursa(job #1168202)

Utilizator ocpodariuPodariu Ovidiu ocpodariu Data 7 aprilie 2014 13:58:46
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
/* 
 * Programul citeste doua numere din fisierul
 * de intrare("adunare.in"), face suma lor si 
 * scrie rezultatul in fisierul de iesire
 * ("adunare.out").
 */


#include<fstream>
#include <stdio.h>
using namespace std;

/*
 * Calculeaza cel mai mic divizor comun
 * a doua numere.
 */
int cmmdc (int a, int b) {

	int r = a % b;

	while (r != 0) {
		a = b;
		b = r;
		r = a % b;
	}

	return b;
}

int main(){
	
	ifstream f("fractii.in");
	ofstream g("fractii.out");
	
	int n, nr = 0;
	
	f>>n;
	
	// Vor fi n fractii cu numaratorul 1
	nr += n;
	// si inca (n-1) fractii cu numitorul 1
	nr += (n-1);

	// Orice doua numere pare il vor avea ca
	// cmmdc pe 2. Deci le putem exclude.
	for (int p = 2; p <= n; p += 2)
		for (int q = 3; q <= n; q += 2) {
			if (cmmdc(p,q) != 1) {printf("%d,%d\n",p,q); continue;}
			nr += 2;
		}
	
	for (int p = 3; p <= n; p += 2)
		for (int q = 3; q <= n; q += 2) {
			if (cmmdc(p,q) != 1) continue;
			nr++;
		}
	
	g<<nr;
	
	return 0;
	
}