eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Задача Іосифа

Задача Іосифа

Иосиф любит принимать участие в соревнованиях по программированию. Его любимой задачей конечно же является задача Иосифа. Она выглядит следующим образом. \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 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
5 3
Вихідні дані #1
7