Submission #1482161
Source Code Expand
//#define __USE_MINGW_ANSI_STDIO 0
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<ll> VL;
typedef vector<VL> VVL;
typedef pair<int, int> PII;
#define FOR(i, a, n) for (ll i = (ll)a; i < (ll)n; ++i)
#define REP(i, n) FOR(i, 0, n)
#define ALL(x) x.begin(), x.end()
#define IN(a, b, x) (a<=x&&x<b)
#define MP make_pair
#define PB push_back
#define INF (1LL<<30)
#define LLINF (1LL<<60)
#define PI 3.14159265359
#define EPS 1e-12
//#define int ll
template <typename T> T &chmin(T &a, const T &b) { return a = min(a, b); }
template <typename T> T &chmax(T &a, const T &b) { return a = max(a, b); }
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
template<unsigned MOD>
class ModInt {
public:
unsigned x;
ModInt(): x(0) { }
ModInt(signed sig) { if((x = sig % MOD + MOD) >= MOD) x -= MOD; }
unsigned get() const { return x; }
ll binpow(ll y, ll e) {
ll a = 1, p = y;
while(e > 0) {
if(e%2 == 0) {p = (p*p) % MOD; e /= 2;}
else {a = (a*p) % MOD; e--;}
}
return a % MOD;
}
ModInt &operator+=(ModInt that) {
if((x += that.x) >= MOD) x -= MOD;
return *this;
}
ModInt &operator-=(ModInt that) {
if((x -= that.x) >= MOD) x -= MOD;
return *this;
}
ModInt &operator*=(ModInt that) {
x = (unsigned long long)x * that.x % MOD;
return *this;
}
ModInt &operator/=(ModInt that) {
x = (unsigned long long)x * (binpow(that.x, MOD-2)) % MOD;
return *this;
}
ModInt operator+(ModInt that) const { return ModInt(*this) += that; }
ModInt operator-(ModInt that) const { return ModInt(*this) -= that; }
ModInt operator*(ModInt that) const { return ModInt(*this) *= that; }
ModInt operator/(ModInt that) const { return ModInt(*this) /= that; }
};
typedef ModInt<1000000007> mint;
int a[105];
mint dp[105][260][105], fact[105];
signed main(void)
{
int n, x;
cin >> n >> x;
REP(i, n) cin >> a[i];
dp[0][0][0] = 1;
REP(i, n) REP(j, 260) REP(k, n+1) {
if(dp[i][j][k].get() > 0) {
dp[i+1][j^a[i]][k+1] += dp[i][j][k];
dp[i+1][j][k] += dp[i][j][k];
}
}
// REP(i, 126) {
// cout << "xor:" << i << " ";
// REP(j, n+1) {
// cout << dp[n][i][j].get() << " ";
// }
// cout << endl;
// }
fact[0] = 1;
FOR(i, 1, n+1) fact[i] = fact[i-1]*i;
mint ret = 0;
REP(i, n+1) {
ret += dp[n][x][i]*fact[i];
}
cout << ret.get() << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
C - Solving XOR-Puzzles |
User |
ferin_tech |
Language |
C++14 (GCC 5.4.1) |
Score |
400 |
Code Size |
2569 Byte |
Status |
AC |
Exec Time |
12 ms |
Memory |
11520 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Subtask3 |
Score / Max Score |
0 / 0 |
50 / 50 |
170 / 170 |
180 / 180 |
Status |
|
|
|
|
Set Name |
Test Cases |
Sample |
sample_1.txt, sample_2.txt, sample_4.txt |
Subtask1 |
sample_1.txt, sample_2.txt, sub1_in1.txt, sub1_in2.txt, sub1_in3.txt, sub1_in4.txt, sub1_in5.txt, sub1_in6.txt, sub1_in7.txt |
Subtask2 |
sample_1.txt, sample_2.txt, sub1_in1.txt, sub1_in2.txt, sub1_in3.txt, sub1_in4.txt, sub1_in5.txt, sub1_in6.txt, sub1_in7.txt, sub2_in1.txt, sub2_in2.txt, sub2_in3.txt, sub2_in4.txt, sub2_in5.txt, sub2_in6.txt, sub2_in7.txt, sub2_in8.txt, sub2_in9.txt |
Subtask3 |
sample_1.txt, sample_2.txt, sample_4.txt, sub1_in1.txt, sub1_in2.txt, sub1_in3.txt, sub1_in4.txt, sub1_in5.txt, sub1_in6.txt, sub1_in7.txt, sub2_in1.txt, sub2_in2.txt, sub2_in3.txt, sub2_in4.txt, sub2_in5.txt, sub2_in6.txt, sub2_in7.txt, sub2_in8.txt, sub2_in9.txt, sub3_in1.txt, sub3_in2.txt, sub3_in3.txt, sub3_in4.txt, sub3_in5.txt, sub3_in6.txt, sub3_in7.txt, sub3_in8.txt, sub3_in9.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_1.txt |
AC |
5 ms |
11392 KB |
sample_2.txt |
AC |
5 ms |
11392 KB |
sample_4.txt |
AC |
6 ms |
11392 KB |
sub1_in1.txt |
AC |
6 ms |
11392 KB |
sub1_in2.txt |
AC |
6 ms |
11392 KB |
sub1_in3.txt |
AC |
6 ms |
11392 KB |
sub1_in4.txt |
AC |
6 ms |
11392 KB |
sub1_in5.txt |
AC |
5 ms |
11392 KB |
sub1_in6.txt |
AC |
5 ms |
11392 KB |
sub1_in7.txt |
AC |
6 ms |
11392 KB |
sub2_in1.txt |
AC |
6 ms |
11392 KB |
sub2_in2.txt |
AC |
6 ms |
11392 KB |
sub2_in3.txt |
AC |
6 ms |
11392 KB |
sub2_in4.txt |
AC |
6 ms |
11392 KB |
sub2_in5.txt |
AC |
6 ms |
11392 KB |
sub2_in6.txt |
AC |
6 ms |
11392 KB |
sub2_in7.txt |
AC |
6 ms |
11392 KB |
sub2_in8.txt |
AC |
6 ms |
11392 KB |
sub2_in9.txt |
AC |
6 ms |
11392 KB |
sub3_in1.txt |
AC |
12 ms |
11392 KB |
sub3_in2.txt |
AC |
12 ms |
11392 KB |
sub3_in3.txt |
AC |
12 ms |
11392 KB |
sub3_in4.txt |
AC |
12 ms |
11392 KB |
sub3_in5.txt |
AC |
12 ms |
11392 KB |
sub3_in6.txt |
AC |
12 ms |
11392 KB |
sub3_in7.txt |
AC |
12 ms |
11392 KB |
sub3_in8.txt |
AC |
12 ms |
11392 KB |
sub3_in9.txt |
AC |
12 ms |
11520 KB |