아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

타이머

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

요약
취약점을 쓰면 타이머가 y의 다음 배수로 올라간다. 최대 k번 사용하고 t초가 지난 뒤 얻을 수 있는 가장 큰 값을 구한다.
난이도

보통10점 중 7점

유형
그리디, 수학, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

학교에서 장난을 친 벌로 페티야는 가택 연금형을 살고 있다. 그의 방에는 지금까지 벌을 받은 시간을 초 단위로 표시하는 타이머가 있다. 타이머의 숫자는 매초 1씩 증가한다. 형량을 줄이고 싶었던 페티야는 타이머에서 취약점을 찾아냈다. 타이머가 현재 aa초를 표시하고 있을 때, 이 취약점을 이용하면 타이머가 bb초를 표시하도록 만들 수 있다. 여기서 bb는 aa 이상이면서 주어진 수 yy로 나누어지는 가장 작은 수이다.

페티야는 타이머가 최대한 큰 수를 표시하기를 원한다. 하지만 들키고 싶지도 않기 때문에 취약점을 kk번 넘게 사용하지 않는다. 페티야가 취약점을 발견한 순간 타이머에는 xx가 표시되어 있었다면, 실제로 tt초가 흐른 뒤 타이머에 표시될 수 있는 최댓값은 얼마인가?

예를 들어 취약점을 발견한 순간 타이머에 x=9x = 9가 표시되어 있었고, y=10y = 10, 취약점을 최대 k=10k = 10번 사용할 계획이며 t=2t = 2라고 하자. 그러면 페티야가 타이머에서 얻을 수 있는 최댓값은 30이며, 이를 위해 그는 다음과 같이 행동해야 한다. 곧바로 취약점을 사용하면 타이머는 10이 된다. 1초가 지나면 타이머는 11이 되고, 취약점을 사용하면 페티야는 20을 얻는다. 다시 1초가 지나면 21이 되고, 취약점을 사용하면 30을 얻는다.

입력

첫 번째 줄에는 정수 TT (1≤T≤1041 \le T \le 10^4)가 주어진다. 이는 테스트 예시의 수이다. 다음 TT개의 줄에는 각각 네 개의 정수 xx, yy, kk, tt가 주어진다. (모든 수는 1 이상 10910^9 이하이다.)

출력

각 테스트 예시마다 tt초 뒤에 타이머가 표시할 수 있는 최댓값을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    2
    2 6 1 3
    9 10 10 2
    
    예상 출력
    9
    30