짧은 함수
시간 제한2초메모리 제한1024 MB
길이 N인 배열 A와 정수 K가 주어질 때, i번째 라운드마다 B[j]를 A[j]와 A[(j+2i) mod N]의 곱으로 바꾸는 과정을 K번 반복한 뒤 B의 각 원소를 998244353으로 나눈 나머지로 구합니다.
문제
지난주 알고리즘 수업의 강사가 주어진 의사코드 함수의 출력을 구하는 과제를 냈다. 과제는 문제 하나뿐이지만 강사는 얕보지 말라고 경고했다.
길이가 인 양의 정수 배열 (인덱스는 부터 까지)와 정수 가 주어진다. 다음 함수의 출력을 구하시오.
SomeFunction(A[0..N-1], N, K):
B[0..N-1] = A[0..N-1]
for i = 0 to K-1:
A[0..N-1] = B[0..N-1]
for j = 0 to N-1:
B[j] = A[j] × A[(j + 2i) mod N]
return B[0..N-1]
함수가 반환하는 의 값을 구하시오. 입력 , , 는 조교에게 문의하여 받으시오. 직접 구현하면 몇 시간이 걸릴 수 있으므로 더 빠른 방법이 필요하다.
의 값은 매우 클 수 있다. 각 원소를 으로 나눈 나머지를 출력하라.
입력
첫 줄에 두 정수 과 가 주어진다 (; ). 다음 줄에는 배열 의 원소인 개의 정수 가 주어진다 ().
출력
개의 정수를 한 줄에 공백으로 구분하여 출력하라. 배열 의 각 원소를 으로 나눈 나머지이다.