fbpx

Problema #2308 – Fractzii – Rezolvari PBInfo

de Mihai-Alexandru

O proprietate interesanta a fracțiilor ireductibile este ca orice fracție se poate obține după următoarele reguli:

O proprietate interesanta a fracțiilor ireductibile este ca orice fracție se poate obține după următoarele reguli:
– pe primul nivel se afla fracția 1/1;
– pe al doilea nivel, în stânga fracției 1/1 de pe primul nivel, plasam fracția 1/2 iar în dreapta ei fracția 2/1;

nivelul 1: 1/1
nivelul 2: 1/2 2/1

– pe fiecare nivel k se plasează sub fiecare fracție i / j de pe nivelul de deasupra, fracția i / (i + j) în stânga, iar fracția (i + j) / j în dreapta.

nivelul 1: 1/1
nivelul 2: 1/2 2/1
nivelul 3: 1/3 3/2 2/3 3/1

Cerința

Dându-se o fracție oarecare prin numărătorul și numitorul său, determinați numărul nivelului pe care se află fracția sau o fracție echivalentă (având aceeași valoare) cu aceasta.

Date de intrare

Fișierul de intrare fractzii.in conține pe prima linie două numere naturale nenule N M, separate printr-un spațiu, reprezentând numărătorul și respectiv numitorul unei fracții.

Date de ieșire

Fișierul de ieșire fractzii.out va conţine o ingură linie, pe care va fi scris număr natural nenul, reprezentând numărul nivelului care corespunde fracţiei.

Restricții și precizări

  • 1 ≤ N, M ≤ 2 000 000 000

Exemplul 1:

fractzii.in

13 8

fractzii.out

6

Exemplul 2:

fractzii.in

12 8

fractzii.out

3
#include <bits/stdc++.h>
using namespace std;
ifstream cin("fractzii.in");
ofstream cout("fractzii.out");
int cmmdc(int a , int b)
{
    if(b != 0) return a / b + cmmdc(b , a % b);
    else return 0;
}
int main()
{
    int n ,c;
    cin >> n >> c;
    cout << cmmdc(n ,c );
}
Comentarii

S-ar putea sa iti placa