样例3求解释qwq
查看原帖
样例3求解释qwq
1073457
Rinnosuke楼主2024/2/27 21:09
#include<bits/stdc++.h>
#define maxn 1000005
using namespace std;
int n,m,c,k,a[maxn];
string s;
unsigned long long ans,tmp,ft;
void turn(int n){
	while(n!=1){
		if(n%2){
			s="1"+s;
			n/=2;
		}else{
			s="0"+s;
			n/=2;
		}
	}
	if(n==1){
		s="1"+s;
	}
}
int cnt[maxn];
int main(){
	cin>>n>>m>>c>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		tmp|=a[i];
	}
	turn(tmp);
	for(int i=1;i<=k-s.length();i++){
		s=s+"0";
	}
	for(int i=1,q,p;i<=m;i++){
		cin>>p>>q;
		if(s[p]=='0' && !cnt[p]){
			++ft;
			// cout<<p<<'\n';
			cnt[p]=1;
		}
	}
	// cout<<ft<<'\n';
	ans=pow(2,k-ft)-n;
	cout<<ans;
	return 0;
}

自己调试的结果是样例3有10位不能为1,不知道为啥,求大佬讲解qwq

2024/2/27 21:09
加载中...