Logo
(追記) (追記ここまで)

32024번 - 복사 붙여넣기

시간 제한메모리 제한제출정답맞힌 사람정답 비율
3 초 (추가 시간 없음) 1024 MB (추가 메모리 없음)30262187.500%

문제

할 일이 없어진 밍구는 복사 붙여넣기 놀이를 하고 있다! 복사 붙여넣기 놀이는 파일을 복사 붙여넣기하면서 생기는 이름을 살펴보는 놀이이다.

파일의 이름은 0 이상 2w 미만의 정수로 이루어진 길이 1 이상의 수열이다. 한 번의 복사 붙여넣기는 다음 절차로 이루어진다.

  • 복사 과정: 폴더에 있는 모든 파일을 선택한다.
  • 붙여넣기 과정: 각 선택된 파일 S에 대해서 다음을 반복한다. 이때 새로 생성한 파일은 선택되지 않는다.
    • S의 뒤에 0을 추가한 이름을 가진 파일을 생성한다. 단, 이미 같은 이름을 가진 파일이 있다면 생성하지 않는다.
    • 0 ≤ i < w인 모든 i에 대해, S의 마지막 원소에 2i를 XOR한 이름을 가진 파일을 생성한다. 단, 이미 같은 이름을 가진 파일이 있다면 생성하지 않는다.
  • 붙여넣기 과정이 끝난 후, 모든 선택된 파일을 선택 해제한다.

예를 들어, w = 2이고, 폴더에 파일이 [0] 하나만 있을 때 복사 붙여넣기를 반복하면 폴더의 내용물은 다음과 같이 변한다.

  • 초기 상황: [0]
  • 1회: [0], [0, 0], [1], [2]
  • 2회: [0], [0, 0], [0, 0, 0], [0, 1], [0, 2], [1], [1, 0], [2], [2, 0], [3]

복사 붙여넣기 고수 밍구는 여러분에게 다음과 같은 문제를 주었다. 폴더에 파일이 [0] 하나만 있는 상황에서 K번 복사 붙여넣기를 했을 때, 밍구가 주는 파일의 이름 A가 사전 순으로 몇 번째에 위치하는지 구하는 것이다!

밍구를 위해 A가 사전 순으로 위치하는 순서를 998 244 353으로 나눈 나머지를 구해주자!

입력

첫째 줄에 정수 w, K가 공백으로 구분되어 주어진다. (1 ≤ w ≤ 60; 1 ≤ K ≤ 100 000)

둘째 줄에 찾고자 하는 파일의 이름 A의 길이 N이 주어진다. (1 ≤ N ≤ 100 000)

셋째 줄에 Ai번째 원소 Ai들이 공백으로 구분되어 주어진다. (1 ≤ iN; 0 ≤ Ai < 2w)

복사 붙여넣기를 K번 했을 때 A의 이름을 가지는 파일이 존재하는 경우만 입력으로 주어진다.

출력

사전순으로 가장 앞서는 파일의 순서를 1이라고 할 때, A가 사전순으로 위치하는 순서를 998 244 353으로 나눈 나머지를 출력한다.

제한

예제 입력 1

2 2
3
0 0 0

예제 출력 1

3

예제 입력 2

2 2
1
3

예제 출력 2

10

예제 입력 3

60 2024
4
998244353 1000000007 3141592653 2718281828

예제 출력 3

62474228

노트

수열 a = [a1, a2, ⋯, an]이 수열 b = [b1, b2, ⋯, bm]보다 사전순으로 앞선다는 것은 다음을 모두 만족시키는 양의 정수 i가 존재한다는 뜻이다.

  • i보다 작은 모든 양의 정수 j에 대해, ajbj 모두 존재하면서 aj = bj
  • bi가 존재함
  • ai가 존재하지 않거나 ai < bi

출처

University > 전국 대학생 프로그래밍 대회 동아리 연합 > UCPC 2024 예선 연습 세션 PB번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /