题解:P16225 [蓝桥杯 2026 省 A] 量子 2048

· · 题解

更改日记:2026.5.14 把 4093 写成 4039 了,进行更改

定义 N = 2048

因为一共有两种情况,所以最终答案一定是 2 的多少次方。

其实核心在于确定满足所有约束条件的矩阵中,独立参数的个数。局部 2 \times 2 奇偶约束让整个 2048 \times 2048 矩阵由第一行和第一列的唯一确定,初始参数为 2 \times N - 1 个。

:::info[什么是“唯一确定”]{open} 换句话说,只要填好第一行和第一列,剩下的所有格子,都只有一种填法能符合 2 \times 2 小方块的规则。 :::

结合行和列的奇偶,因为 \frac{N}{2} = 1024,是偶数,行和列的全局约束分别转化为对第一行和第一列的一个独立线性方程,共消耗 2 个参数。所以,总参数个数为 (2 \times N - 1) - 2 = 2 \times N - 3 = 4093

:::info[独立线性方程]{open} 说白点就是:

因为后面的格子都被前面定死了,所以为了让‌所有行‌都合格,需要让‌第一行‌的填法满足‌一个方程。又为了让‌所有列‌都合格,所以需要让‌第一列‌的填法满足‌另一个方程。

每解出一个方程,就少了一个随意填写的机会,那么参数减 1

总共解两个方程,所以参数减 2。 :::

所以最终答案为:

2^{4093} \bmod 998244353

:::success[AC Code]

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MOD=998244353,N=2048;
int cnt=2*N-3;
int KSM(int x,int y) {
    int res=1;
    x%=MOD;
    while(y>0){
        if(y&1) res=(res*x)%MOD;
        x=(x*x)%MOD; 
        y>>=1; 
    }
    return res;
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0); 
    cout<<KSM(2,cnt)<<endl;
    exit(0);
}

:::