단어의 개수
시간 제한1초메모리 제한1024 MB
런 렝스로 압축된 문자열이 주어질 때, 전개한 문자열의 서로 다른 부분 수열의 개수를 998244353으로 나눈 나머지로 구한다.
문제
알파벳 소문자로 이루어진 문자열 가 주어진다. 이 문자열 는 매우 길 수 있기 때문에 '압축 문자열'의 형태로 입력이 주어진다. '압축 문자열'은 형태의 순서 쌍이 여러 개 나열된 형태로 표현된다. 주어진 '압축 문자열'을 문자열 로 복원하는 과정은 다음과 같다.
- 최초의 문자열 는 비어있다.
- 에 대하여 차례대로 문자열 의 맨 뒤에 문자 를 연속하여 개 덧붙인다.
예를 들어, , , , , 로 주어진 '압축 문자열'을 복원한 문자열 는 이다.
이때, 의 서로 다른 subsequence의 개수를 구하여라. 값이 매우 클 수 있으니 998244353으로 나눈 나머지를 출력하도록 한다. subsequence , 가 서로 다르다는 것은, 이거나, 이면서 어떤 에 대해 , 가 성립함을 의미한다.
입력
첫째 줄에 문자열 의 압축 문자열의 순서쌍 개수를 의미하는 이 주어진다.
다음 줄부터 줄에 걸쳐 압축 문자열의 번째 순서쌍 가 차례대로 주어진다. 는 알파벳 소문자이고, 는 개수를 의미한다. 또한 일 때, 이다.
출력
서로 다른 subsequence의 개수를 998244353으로 나눈 나머지를 출력하라.
힌트
subsequence란 주어진 문자열의 일부 항을 원래 순서대로 나열하여 얻을 수 있는 문자열을 의미한다.