Cod sursa(job #3168824)

Utilizator ifrim.claudiaClaudia Ifrim ifrim.claudia Data 13 noiembrie 2023 14:23:15
Problema Fractii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
// https://www.infoarena.ro/problema/fractii
// Fractii
// 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
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("fractii.in");
ofstream fout("fractii.out");

int n;

int cmmdc(int a, int b)
{
  if (!b)
    return a;
  return cmmdc(b, a % b);
}

int main()
{
  fin >> n;
  fin.close();

  if (n < 1 || n > 1000000)
  {
    return 0;
  }

  int count = 0;

  for (int i = 1; i <= n; i++)
  {
    int f = 1;
    while (f <= n)
    {
      if (cmmdc(i, f) == 1)
      {
        count++;
      }
      f++;
    }
  }

  fout << count << endl;
  fout.close();

  return 0;
}