Задачі
Задача Іосифа
Задача Іосифа
Иосиф любит принимать участие в соревнованиях по программированию. Его любимой задачей конечно же является задача Иосифа. Она выглядит следующим образом.
\textit{Имеется }\textit{\textbf{n}}\textit{ людей, пронумерованных от }\textit{\textbf{0}}\textit{ до }\textit{\textbf{n - 1}}\textit{, и стоящих по кругу. Человека с номером }\textit{\textbf{k}}\textit{, если отсчитать от }\textit{\textbf{0}}\textit{, отправляют на казнь. Далее по кругу начиная от человека которого казнили, продолжают отсчет и казнят }\textit{\textbf{k}}\textit{-го. Процесс казней продолжается пока не останется только один человек. Он и выживет. По заданным }\textit{\textbf{n}}\textit{ и }\textit{\textbf{k}}\textit{ необходимо определить номер выжившего в исходном кругу.}
Конечно, каждый из Вас знает решение этой задачи. Решение достаточно короткое, и требует всего лишь одного цикла:
\textbf{r := 0;}
\textbf{for i from 1 to n do}
\textbf{r := (r + k) mod i;}
\textbf{return r;}
Через "\textbf{x mod y}" обозначен остаток от деления \textbf{x} на \textbf{y}.
Однако Иосиф достаточно умен. Он изучил алгоритм, но не понял его смысла. Поэтому он забыл детали алгоритма, и помнил решение лишь приблизительно.
Он рассказал задачу своему другу Андрею, при этом сообщив, что может найти решение согласно следующему алгоритму:
\textbf{r := 0;}
\textbf{for i from 1 to n do}
\textbf{r := r + (k mod i);}
\textbf{return r;}
Андрей конечно же отметил, что Иосиф неправ. Однако описанная Иосифом функция оказалась достаточно интересной.
\includegraphics{https://static.e-olymp.com/content/b8/b878f40d06e13e5b574ce64e3da49c980e4d3734.jpg}
По заданным \textbf{n} и \textbf{k} найдите .
\InputFile
Два числа \textbf{n} и \textbf{k} (\textbf{1} ≤ \textbf{n}, \textbf{k} ≤ \textbf{10^9}).
\OutputFile
Вывести требуемую сумму.
Вхідні дані #1
5 3
Вихідні дані #1
7