Cod sursa(job #78657)

Utilizator Dr.OptixCristian Dinu Dr.Optix Data 18 august 2007 21:19:33
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.83 kb
/*******************************************************************************
Problema   : Fractii
Website    : InfoArena
Rezolvitor : Dr.Optix

Enunt:
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
*******************************************************************************/

//includ fisierele necesare
#include <iostream>
#include <fstream.h>

//main() -- functia principala
int main()
{
    //deschid fisierele
    ifstream fin("fractii.in");
    ofstream fout("fractii.out");
    
    //declar variabilele necesare
    long n,i,j,s,a,b;
    
    //citesc datele
    fin>>n;
    
    //calculez numarul fractiilor
    s=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        {
            a=i; b=j;
            while(a!=b)
            {
                if(a>b)
                    a-=b;
                else
                    b-=a;
            }
            if(a==1)
                s++;
        }
            
    //scriu rezultatul
    fout<<s;
    
    //inchid fisierele
    fin.close();fout.close();
    return 0;
}