QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#602909#8520. Xor PartitionsShwStoneWA 2ms8412kbC++14744b2024-10-01 13:27:582024-10-01 13:28:00

Judging History

你现在查看的是最新测评结果

  • [2024-10-01 13:28:00]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:8412kb
  • [2024-10-01 13:27:58]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

const int MAXN(3e5 + 5);
const long long MOD(1e9 + 7);

int n;
long long a[MAXN];
long long dp[MAXN], sum[MAXN][64][2];

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%lld", a + i);
	}
	dp[0] = 1;
	for (int j = 0; j < 64; j++) sum[0][j][0] = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j < 64; j++) {
			long long b = (a[i] >> j) & 1ll;
			(dp[i] += (sum[i - 1][j][b ^ 1] << j)) %= MOD;
		}
		for (int j = 0; j < 64; j++) {
			long long b = (a[i] >> j) & 1ll;
			sum[i][j][b] = sum[i - 1][j][0];
			sum[i][j][b ^ 1] = sum[i - 1][j][1];
			(sum[i][j][0] += dp[i]) %= MOD;
		}
		continue;
	}
	printf("%lld\n", dp[n]);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 7892kb

input:

4
7 3 1 2

output:

170

result:

ok 1 number(s): "170"

Test #2:

score: 0
Accepted
time: 1ms
memory: 7964kb

input:

1
0

output:

0

result:

ok 1 number(s): "0"

Test #3:

score: 0
Accepted
time: 1ms
memory: 7884kb

input:

1
1

output:

1

result:

ok 1 number(s): "1"

Test #4:

score: 0
Accepted
time: 1ms
memory: 8052kb

input:

3
1 2 3

output:

16

result:

ok 1 number(s): "16"

Test #5:

score: 0
Accepted
time: 0ms
memory: 7968kb

input:

4
0 1 0 1

output:

2

result:

ok 1 number(s): "2"

Test #6:

score: -100
Wrong Answer
time: 2ms
memory: 8412kb

input:

562
918479109239293921 960173570446350728 374394588863436385 418106819278123099 473761712658352147 662782574081105364 824954323015093862 827581845536521847 184394794881199801 820907621998888642 606529830885621237 961790689782125501 582742201855597942 337901250755571075 287706594894797714 18578215893...

output:

-457423506

result:

wrong answer 1st numbers differ - expected: '641941658', found: '-457423506'