Clasa a IX-a · Divizibilitate și numere primeRead in English
Simplificarea unei fracții în C++
În engleză: Simplifying a fraction
O(log n)C++1735 de linii2 exemple
Ideea
O fracție a / b devine ireductibilă dacă împărțim numărătorul și numitorul la cmmdc(a, b). Calculăm cmmdc-ul pe copii, ca să păstrăm valorile inițiale.
Descrierea în engleză
A fraction a / b becomes irreducible if we divide the numerator and the denominator by gcd(a, b). We compute the GCD on copies, to keep the original values.
- Complexitate
- O(log(min(a, b)))
- Clasa
- Clasa a IX-a (Grade 9)
Exemple
Exemplul 1
Intrare
84 36
Ieșire așteptată
7 3
Exemplul 2
Intrare
5 9
Ieșire așteptată
5 9
Codul C++
Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.
/*
* Titlu: Simplificarea unei fracții
* Clasa: 9
* Capitol: Divizibilitate și numere prime
* Descriere: O fracție a / b devine ireductibilă dacă împărțim numărătorul și
* numitorul la cmmdc(a, b). Calculăm cmmdc-ul pe copii, ca să
* păstrăm valorile inițiale.
* Complexitate: O(log(min(a, b)))
*
* Exemplu
* Intrare: 84 36
* Ieșire: 7 3
*
* Exemplu
* Intrare: 5 9
* Ieșire: 5 9
*/
#include <iostream>
using namespace std;
int main()
{
long long a, b;
cin >> a >> b;
long long x = a, y = b;
while (y != 0)
{
long long r = x % y;
x = y;
y = r;
}
cout << a / x << ' ' << b / x << '\n';
return 0;
}
Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.