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 ); }