n개의 단어를 b박자 주기로 반복할 때, 주어진 단어가 X번째로 외쳐지는 턴 번호를 구한다.
보통6수학이분 탐색누적 합구현아직 제출이 없습니다시간 제한1초메모리 제한128 MB디디가 좋아하는 랜덤 게임 ~! 무슨 게임 ~! 게임 스타트!!
딸기당근수박참외메론게임♪
디디대학에서 하는 딸기당근수박참외메론게임의 규칙은 다음과 같다.
if (b == 1) printf("%s", S[1]);
else {
if ((i - 1) % (2 * (b - 1)) + 1 < b) {
for (int j = 1; j <= (i - 1) % (b - 1) + 1; j++)
printf("%s ", S[(j - 1) % n + 1]);
} else {
for (int j = 1; j <= b - ((i - 1) % (b - 1)); j++)
printf("%s ", S[(j - 1) % n + 1]);
}
}
단어 집합 S의 번호는 1부터 시작한다.
n=3, b=5이고 단어가 순서대로 king, god, gd이면 차례마다 외치는 말은 다음과 같다.
그 뒤로도 같은 방식으로 이어진다.
디디는 단어 k가 외쳐진 횟수가 X번이 되는 순간이 몇 번째 차례인지 궁금해졌다. 디디의 궁금증을 풀어 줄 프로그램을 작성하라.
첫째 줄에 n과 b가 주어진다. (1≤n≤2×105, n≤b≤1012)
둘째 줄에 단어 k와 X가 주어진다. (1≤X≤1012)
셋째 줄에 게임에 쓸 단어 n개가 공백으로 구분되어 주어진다. 모든 단어는 알파벳 소문자로 이루어지고, 길이는 10을 넘지 않는다.
단어 k가 X번째로 외쳐지는 차례의 번호를 출력한다. 정답이 존재하는 입력만 주어진다.