1 条题解
-
8
每人发题解?我来发一个[doge] 看完记得点赞哦~
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int N = 1000005; typedef unsigned long long ll; int n, m, c, K; bool vis[64]; ll a[N]; int main() { scanf("%d%d%d%d", &n, &m, &c, &K); ll sum = 0; for (int i = 1; i <= n; i++) { ll x; scanf("%llu", &x); sum |= x; // 可以做到统计在已经饲养的动物中,每一个二进制位出现的1 } int k = K; for (int i = 1; i <= m; i++) { int p,q; scanf("%d%d", &p, &q); if (!(sum >> p & 1) && vis[p] == false) // sum >> p & 1 表示 在已经饲养的动物中,第p个二进制位是否为1 { vis[p] = true;//,去重 k--; } } //设能选的位数是 k,答案就是 2^k - n if (k == 64) { if (n == 0) puts("18446744073709551616");//2^64超范围 } else printf("%llu\n", (1ull << k) - n); }
已AC,放心食用!
- 1
信息
- ID
- 1362
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 57
- 已通过
- 42
- 上传者