#include <iostream>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
if (n == 2) {
cout << 7; // особый случай
return 0;
}
long long unsigned x = 1;
for (int i = 0; i < n; ++i) { x *= n; } // x = n в степени n
x -= (n - 1) * k;
cout << x;
}
(Время: 1 сек. Память: 16 Мб Сложность: 53%)
Однажды N рыбаков отправились на рыбалку, где поймали X рыб. После этого рыбаки легли спать. Утром, просыпаясь друг за другом, каждый из них делил выловленную рыбу на N частей. Каждый раз в остатке оставалось ровно K рыб (0 < K < N). Эти K рыб выбрасывались обратно в море. Рыбак забирал свою часть улова и отбывал домой, не зная ничего о том, поступал ли уже кто-либо из остальных рыбаков таким же образом.
Ваша задача – определите при заданных N и K минимально возможное целое положительное значение X – число рыб, удовлетворяющее условию задачи.
Входные данные
Входной файл INPUT.TXT содержит два целых числа N и K, разделенные пробелом (2 ≤ N ≤ 15, 0 < K < N).
Выходные данные
Выходной файл OUTPUT.TXT должен содержать одно целое положительное число X – наименьшее возможное количество выловленной рыбаками рыбы.
Примеры
№ INPUT.TXT OUTPUT.TXT
1 3 1 25
2 4 3 247
(В условие забыли добавить, что количество рыб не должно равняться 0)