Mathematical Algorithms TWK Open ∮ Problem #D - Tam Phân Tập Hợp

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Pypy, Pypy 3, Python
Điểm: 2100 Thời gian: 1.0s Bộ nhớ: 256M Input: tamphan.inp Output: tamphan.out

Youtuber_TWK và kyanh đang tham gia một tiết học về lý thuyết tập hợp.

Có một tập hợp gồm \(n\) phần tử được đánh số từ \(0\) đến \(n-1\) và một mảng \(A\) gồm \(2^n\) phần tử.

Mỗi số nguyên \(x\) từ \(0\) đến \(2^n-1\) biểu diễn một tập con \(S\) của tập \({0,1,\ldots,n-1}\) bằng biểu diễn bitmask:

  • bit thứ \(i\) của \(x\) bằng \(1\) khi và chỉ khi \(i \in S\);
  • \(A[x]\) là giá trị được gán cho tập con \(S\).

Với hai hàm \(F\) và \(G\) trên các tập con, định nghĩa subset convolution: \((F * G)[S] = \sum_{X \subseteq S} F[X] \cdot G[S \setminus X]\).

Cho ba tập con có thứ tự \((S_1,S_2,S_3)\) của \(S\). Bộ ba này được gọi là một phân chia hợp lệ nếu:

\(S_1 \cap S_2 = S_1 \cap S_3 = S_2 \cap S_3 = \varnothing\) và \(S_1 \cup S_2 \cup S_3 = S\).

Các tập \(S_1,S_2,S_3\) có thể rỗng và thứ tự của chúng được phân biệt.

Trọng số của một phân chia hợp lệ là: \(A[S_1] \cdot A[S_2] \cdot A[S_3]\). Với mỗi tập con \(S\), hãy tính tổng trọng số của tất cả các phân chia hợp lệ của \(S\).

Nói cách khác, cần tính: \(B[S] = \sum A[S_1] \cdot A[S_2] \cdot A[S_3]\) trên mọi bộ ba \((S_1,S_2,S_3)\) thỏa mãn các điều kiện trên.

Tất cả kết quả phải được lấy modulo \(998244353\).

Input

  • Dòng đầu tiên chứa một số nguyên \(n\).

  • Dòng thứ hai chứa \(2^n\) số nguyên \(A[0], A[1], \ldots, A[2^n-1]\).

  • Các giá trị thỏa mãn \(0 \le A[i] < 998244353\).

Output

  • In ra \(2^n\) số nguyên \(B[0],B[1],\ldots,B[2^n-1]\).

  • Giá trị \(B[x]\) phải là đáp án tương ứng với tập con được biểu diễn bởi bitmask \(x\), lấy modulo \(998244353\).

Constraints

  • \(1 \le n \le 20\).
  • \(0 \le A[i] < 998244353\).

Example

Test 1

Input
2
1 2 3 4
Output
1 6 9 48
Note

Có \(n=2\), tương ứng với hai phần tử \(0\) và \(1\).

Ta có:

\(A[\varnothing]=1\);

\(A[{0}]=2\);

\(A[{1}]=3\);

\(A[{0,1}]=4\).

Với tập rỗng, chỉ có một phân chia: \((\varnothing,\varnothing,\varnothing)\).

Do đó: \(B[\varnothing]=1\).

Với tập \({0}\), phần tử \(0\) có thể thuộc một trong ba tập \(S_1,S_2,S_3\). Vì vậy: \(B[{0}] = 3 \cdot 2 \cdot 1 \cdot 1 = 6\).

Tương tự: \(B[{1}] = 3 \cdot 3 \cdot 1 \cdot 1 = 9\).

Với \(S={0,1}\), mỗi phần tử độc lập được đưa vào một trong ba phần, tạo ra \(3^2=9\) phân chia có thứ tự. Tổng trọng số của tất cả các phân chia là \(48\).

Vì vậy kết quả là: 1 6 9 48

Test 2

Input
3
1 2 3 4 5 6 7 8
Output
1 6 9 48 15 78 111 516

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: