《离谱》
查看原帖
《离谱》
317400
Foggy_night楼主2023/12/17 09:42

答案一长串

#include<iostream>
#include<cstdio>
#define ull unsigned long long
using namespace std;
const int N = 1000005;
int q[N], p[N], num[N];
bool vis[N];
ull t;
int main(){
	int n, m, c, k;
	scanf("%d%d%d%d", &n, &m, &c, &k);
	int cnt = 0;
	for(int i = 1; i <= n; i++){
		ull a;
		scanf("%llu", &a);
		t |= a;
	}
	for(int i = 1; i <= m; i++){
		scanf("%d%d", q+i, p+i);
		if((t >> p[i]) & 1)
			num[q[i]] = 1;
	}
	int ans = 0;
	for(int i = 1; i <= m; i++)
		if(!num[q[i]]){
			if(vis[p[i]])
				continue;
			ans++;
			vis[p[i]] = 1;
		}
	if(!n && !m && k-ans == 64){
		//超范围
		puts("18446744073709551616");
		return 0; 
	}
	ull sum = 1;
	for(int i = 1; i <= k-ans; i++)
		sum *= 2;
	printf("%ull", sum-n);
	return 0;
}
2023/12/17 09:42
加载中...