게임 이론
시간 제한1초메모리 제한1024 MB
구간을 뒤집는 변경이 q번 주어질 때마다, 모든 비트가 0이 될 때까지 Bobo가 뒤집는 횟수를 998244353으로 나눈 나머지로 구합니다.
문제
0과 1로 이루어진 비트 문자열 에 대해, Bobo는 다음 게임을 진행하여 값을 계산합니다.
- 모든 비트가 0이면 게임이 끝납니다.
- 비트 문자열에 1이 개 있으면, Bobo는 를 뒤집습니다.
비트 문자열의 값은 게임이 끝나기 전까지 Bobo가 뒤집은 횟수입니다.
형식으로 쓰면 다음과 같습니다.
- 이면 입니다.
- 그렇지 않으면, 일 때 입니다. 여기서 는 비트 를 뒤집은 값으로, , 입니다.
이제 Bobo에게 비트 문자열 이 주어지고, 이 문자열에 번의 변경이 가해집니다. 번째 변경은 주어진 , 에 대해 의 모든 비트를 뒤집습니다. 각 변경 후 비트 문자열의 값을 으로 나눈 나머지를 구하세요.
입력
입력은 여러 개의 테스트 케이스로 구성되며, 파일 끝(EOF)에서 끝납니다. 각 테스트 케이스는 다음 형식입니다.
첫 번째 줄에 정수 과 가 주어집니다.
두 번째 줄에 개의 비트 이 주어집니다.
이어지는 개의 줄에는 각각 정수 와 가 주어집니다.
출력
각 변경 후 비트 문자열의 값을 으로 나눈 나머지를 한 줄에 하나씩 출력하세요.
제한
- 각 에 대해
- 각 에 대해
- 각 입력에서 의 합은 을 넘지 않고, 의 합도 을 넘지 않습니다.
힌트
첫 번째 테스트 케이스에서 첫 번째 변경 후 문자열은 100이 됩니다. 따라서 입니다. 두 번째 변경 후에는 111이 되며, 입니다.