잘못 작성한 요세푸스 코드

시간 제한2초메모리 제한128 MB

요약
n, k가 최대 10억일 때 i=1부터 n까지 k mod i의 합을 약수 구간 분할 기법으로 빠르게 계산합니다.
난이도

보통10점 중 6점

유형
정수론, 수학, 투 포인터
정답자
아직 제출이 없습니다

문제

요세푸스 문제의 답을 다음 의사 코드로 구할 수 있다고 하자.

r := 0
for i from 1 to n do
    r := (r + k) mod i
return r

어떤 프로그래머가 이 코드를 잘못 읽고 다음과 같이 작성했다.

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)

출력

첫째 줄에 잘못 작성된 코드가 반환하는 값을 출력한다.

예제1

  1. 예제 1

    입력
    5 3
    
    예상 출력
    7