Задача Йосипа
Йосип захоплюється участю в змаганнях з програмування, і його улюблене завдання — це задача Йосипа. Ось як вона виглядає:
Є n людей, пронумерованих від 0 до n - 1, які стоять по колу. Людину з номером k страчують. Потім, починаючи з цієї точки, знову відраховують k-го і страчують його. Процес триває, поки не залишиться лише одна людина, яка виживе. За заданими n і k потрібно визначити номер того, хто вижив, у початковому колі.
Ви, напевно, знаєте розв'язок цієї задачі. Він досить простий і вимагає лише одного циклу:
r := 0;
for i from 1 to n do
r := (r + k) mod i;
return r;
Тут "x mod y" означає залишок від ділення x на y.
Однак Йосип, будучи кмітливим, вивчив алгоритм, але не зрозумів його суті. Він забув деталі алгоритму і запам'ятав розв'язок лише приблизно.
Він розповів задачу своєму другу Андрію, зазначивши, що може знайти розв'язок за допомогою такого алгоритму:
r := 0;
for i from 1 to n do
r := r + (k mod i);
return r;
Андрій, звісно, зауважив, що Йосип помиляється. Проте функція, яку описав Йосип, виявилася досить цікавою.
За заданими n і k знайдіть значення цієї функції.
Вхідні дані
Два числа n і k (1 ≤ n, k ≤ 10^9).
Вихідні дані
Виведіть потрібну суму.