Cod sursa(job #163718)

Utilizator valentinroscaRosca Valentin valentinrosca Data 22 martie 2008 18:16:47
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
/*Gigel, intr-o zi cand isi facea temele la matematica, s-a apucat sa scrie pe o foaie de hartie, un sir de fractii ireductibile de forma P/Q cu 1 ? P,Q ? N, unde N este un numar natural ales de el. De exemplu, pentru N = 4 el a obtinut urmatorul sir:

1/1;1/2;1/3;1/4;2/1;2/3;3/1;3/2;3/4;4/1;4/3;

Gigel s-a apucat apoi sa numere cate fractii a obtinut pentru N = 4 si a vazut ca sunt 11.
Cerinta

Fiind dat un numar natural N, sa se determine cate fractii sunt in sirul de fractii construit dupa regulile de mai sus.
Date de intrare

Fisierul de intrare fractii.in contine pe prima linie numarul natural N.
Date de iesire

Fisierul de iesire fractii.out trebuie sa contina un numar natural pe prima linie care reprezinta cate fractii sunt in sir.
Restrictii si precizari

    * 1 ? N ? 1.000.000
Timp de executie:2 sec.*/
#include<fstream.h>
#include<math.h>
long N,a,b,s,c,r,ca,cb;
int main()
{
	ifstream fin("fracti.in");
	ofstream fout("fracti.out");
	fin>>N;
	for(a=1;a<=N;a++)
	{		
			for(b=1;b<=N;b++)
			{
				if (a>b){
					ca=a;
					cb=b;
				}
				else{
					ca=b;
					cb=a;
				}
				do
				{
					r=ca%cb;					
					ca=cb;
					cb=r;
				}
				while(r);
				c=ca;
				if(c==1)
				s++;
			}
	}
	fout<<s;
	return 0;
}