动态规划根本写不出来,看题解吧:
#include<bits/stdc++.h>
using namespace std;
#define MOD 998244353
const int N = 1e5 + 10;
int a[N];
int dp[N][64];
int main()
{
cin.tie(nullptr)->sync_with_stdio(false);
int n, x; cin >> n >> x;
for (int i = 0; i < n; i++)cin >> a[i];
dp[0][a[0]] = dp[0][0] = 1; //前0个数异或和为0的子序列的个数为1
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < 64; j++)
{
dp[i][j] = (dp[i - 1][j] + dp[i - 1][j ^ a[i]])%MOD; //前i个数异或和为j的子序列的个数=包含第i个数异或和为j的子序列个数 + 不包含第i个数异或和为j的子序列个数
}
}
cout << dp[n - 1][x]; //前n-1个数异或和为x的子序列的个数
return 0;
}