比赛 4043级2023省选练习赛3 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 吉夫特 最终得分 100
用户昵称 yuan 运行时间 1.634 s
代码语言 C++ 内存使用 2.31 MiB
提交时间 2023-03-08 19:44:44
显示代码纯文本
//code from: https://loj.ac/s/1679079
#include <bits/stdc++.h>
using namespace std;
const int maxn = 211985 + 5;
const int mod = 1000000007;
void amod(int &x, int y) {
	x = x + y >= mod ? x + y - mod : x + y;
}
int n, a[maxn], f[1 << 18];

int main() {
	freopen("2017gift.in", "r", stdin);
	freopen("2017gift.out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n;
	for(int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	reverse(a + 1, a + 1 + n);
	int ans = mod - n;
	for(int i = 1; i <= n; i++) {
		f[a[i]] = 1;
		for(int j = (a[i] - 1) & a[i]; j; j = (j - 1) & a[i]) {
			amod(f[a[i]], f[j]);
		}
		amod(ans, f[a[i]]);
	}
	cout << ans << '\n';
	return 0;
}