[CSP-S2020] 動物園
阿新 • • 發佈:2021-10-02
CSP-2020動物園
#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); }