题目

题目解析


题目要求每个 2 × 2 2 \times 2 2×2 子矩阵的和都是奇数,这意味着矩阵具有一些规律可循。

简单来说,如果我们确定了第一行和第一列的数值,整个矩阵就被唯一确定了。

为了满足每行每列的和都是奇数,第一行和第一列各自的和也必须是奇数。

  • 第一行有 2048 2048 2048 个数,前 2047 2047 2047 个可以随便填,最后一个数由奇偶性决定。
  • 第一列有 2048 2048 2048 个数,前 2047 2047 2047 个可以随便填,最后一个数由奇偶性决定。
  • 由于 a 1 , 1 a_{1,1} a1,1 被重复计算了一次,所以总的填入的总格子数是 2047 + 2047 − 1 = 4093 2047 + 2047 - 1 = 4093 2047+20471=4093

最终答案就是 2 4093 2^{4093} 24093 998244353 998244353 998244353 取模。

代码


#include <bits/stdc++.h>
using namespace std;
int n = 1;
int main() {
    for (int i = 0; i < 4093; i++)
        n *= 2, n %= 998244353;
    printf("%d\n", n);
    return 0;
}//输出618395416

不用开 long long,因为 998244352 × 2 ≤ 2147483647 998244352 \times 2 \le 2147483647 998244352×22147483647,所以不会爆 int。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐