Vacib elmi rəqəm#11057

Vacib elmi rəqəm (Həll təhlili)

Bizə məlumdur ki:

Nəticədə, a + b + x həm , həm də -yə bölünür, bu, a + b + x-in NOK(a, b)-yə bölünməsi ilə ekvivalentdir. Yəni elə bir rəqəmi mövcuddur ki,

a + b + x = k \cdot NOK(a, b)

kimi NOK(a, b) - a - b götürək. Lakin bu rəqəm mənfi olarsa, onun əvəzinə belə götürək:

x = 2 \cdot NOK(a, b) - a - b

Görünür, a + b \le 2 \cdot NOK(a, b).

Nümunə

İkinci nümunədə a = 3, b = 4.~NOK(3, 4) = 12.

Cavab x = NOK(a, b) - a - b = 12 - 3 - 4 = 5-ə bərabərdir.

Üçüncü nümunədə a = 123, b = 123. NOK(123, 123) = 123.

Cavab x = NOK(a, b) - a - b = 123 - 123 - 123 = -123-ə bərabərdir. Bu rəqəm mənfi olduğu üçün cavab belə olacaq:

x = 2 \cdot NOK(a, b) - a - b = 2 \cdot 123 - 123 - 123 = 0

Alqoritmın Tətbiqi

gcd funksiyası və rəqəmlərinin ən böyük ortaq bölənini hesablayır.

long long gcd(long long a, long long b)
{
  return (!b) ? a : gcd(b, a % b);
}

Giriş məlumatlarını oxuyuruq.

cin >> a >> b;

lcm = NOK(a, b) = (a \cdot b)~/~NOD(a, b)-ni hesablayırıq.

lcm = a / gcd(a, b) * b;

Cavabı hesablayırıq.

res = lcm - a - b;
if (res < 0) res += lcm;

Cavabı çıxarırıq.

cout << res << endl;