1 条题解
-
0
#include <bits/stdc++.h> using namespace std; #define int long long const int mod = 1e9+7; // 快速幂函数:计算 a^b % mod int ksm(int a, int b) { int res = 1; while (b) { if (b & 1) res = res * a % mod; a = a * a % mod; b >>= 1; } return res % mod; } void solve() { int n; cin >> n; int a[n+1] = {0}; for(int i = 1; i <= n; i++){ cin >> a[i]; } int q[33] = {0}; // q[j]统计第j位为1的元素个数(最多考虑33位,覆盖1e6的二进制位) for(int i = 1; i <= n; i++){ for (int j = 0; j <= 32; j++){ // 遍历每一位(0到32位) if (a[i] >> j & 1) { // 检查a[i]的第j位是否为1 q[j]++; } } } int ans = 0; for(int i = 0; i <= 32; i++){ if(q[i]){ // 若第i位有元素为1 ans = (ans + (ksm(2, q[i]) - 1) % mod) % mod; // 累加该位贡献:2^m - 1 } } cout << ans % mod << endl; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T = 1; // cin >> T; while (T--) solve(); return 0; }
信息
- ID
- 1155
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 13
- 已通过
- 1
- 上传者