ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#199236 | #2986. 斐波那契树游戏 | tkswls | 100 | 1703ms | 1756kb | C++ | 1.3kb | 2023-12-07 11:21:23 | 2023-12-07 12:50:28 |
answer
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n, g[10004];
const ll mod = 1000000000000000000;
ll f[5][20004], maxn;
//i树 达到j的长度的方案数
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
if (n == 1) {
cout << 0;
return 0;
} else if (n >= 2 && n < 6) {
cout << 1;
return 0;
} else if (n == 6) {
cout << 3;
return 0;
}
g[1] = 0, g[2] = 1;
int u, v;
for (int i = 3; i <= n; i++) {
g[i] = (g[i - 1] + 1) ^ (g[i - 2] + 1);
}
f[2][0] = 1;
int p, q, w;
for (int i = 3; i <= n; i++) {
p = i % 3, q = (i - 1) % 3, w = (i - 2) % 3;
memset(f[p], 0, sizeof(f[p]));
for (int j = 0; j <= 8192; j++) {
if (((j + 1) ^ (g[i - 2] + 1)) <= 8192) {
f[p][(j + 1) ^ (g[i - 2] + 1)] += f[q][j];
// if (f[q][j]) {
// cout << ((j + 1) ^ (g[i - 2] + 1)) << " " << f[q][j] << "[]\n";
// }
f[p][(j + 1) ^ (g[i - 2] + 1)] %= mod;
}
}
for (int j = 0; j <= 8192; j++) {
if (((j + 1) ^ (g[i - 1] + 1)) <= 8192) {
f[p][(j + 1) ^ (g[i - 1] + 1)] += f[w][j];
// if (f[w][j]) {
// cout << ((j + 1) ^ (g[i - 1] + 1)) << " " << f[w][j] << "[]\n";
// }
f[p][(j + 1) ^ (g[i - 1] + 1)] %= mod;
}
}
f[p][g[i - 1] + 1]++, f[p][g[i - 2] + 1]++;
}
cout << f[n % 3][0];
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 2ms
memory: 1724kb
input:
10
output:
17
result:
ok 1 number(s): "17"
Test #2:
score: 10
Accepted
time: 3ms
memory: 1720kb
input:
49
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: 10
Accepted
time: 2ms
memory: 1720kb
input:
98
output:
489682332542266689
result:
ok 1 number(s): "489682332542266689"
Test #4:
score: 10
Accepted
time: 5ms
memory: 1716kb
input:
100
output:
580893155023212545
result:
ok 1 number(s): "580893155023212545"
Test #5:
score: 10
Accepted
time: 40ms
memory: 1728kb
input:
996
output:
65466977719549633
result:
ok 1 number(s): "65466977719549633"
Test #6:
score: 10
Accepted
time: 42ms
memory: 1720kb
input:
1000
output:
867114317183878825
result:
ok 1 number(s): "867114317183878825"
Test #7:
score: 10
Accepted
time: 425ms
memory: 1756kb
input:
10000
output:
438505383468410633
result:
ok 1 number(s): "438505383468410633"
Test #8:
score: 10
Accepted
time: 408ms
memory: 1752kb
input:
9999
output:
642529217977596839
result:
ok 1 number(s): "642529217977596839"
Test #9:
score: 10
Accepted
time: 368ms
memory: 1752kb
input:
8888
output:
952029781415483093
result:
ok 1 number(s): "952029781415483093"
Test #10:
score: 10
Accepted
time: 408ms
memory: 1756kb
input:
9876
output:
355465485961422525
result:
ok 1 number(s): "355465485961422525"
Extra Test:
score: 0
Extra Test Passed