社区讨论

How B&D

学术版参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mhjth0xq
此快照首次捕获于
2025/11/04 08:14
4 个月前
此快照最后确认于
2025/11/04 08:14
4 个月前
查看原帖
B 题求调,代码如下:
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
	int t,x,n;
	cin>>t;
	while(t--){
		cin>>n>>x;
		if(x==0){
			if(n==1) cout<<-1;
			else if(n%2==0) cout<<n;
			else cout<<6+n-3;
			cout<<"\n";
		}else if(n==1) cout<<x<<"\n";
		else if(n==2){
			int k=__builtin_popcount(x);
			if(k>=2){
				cout<<x<<"\n";
				continue;
			}
			int i=1;
			while(1){
				if((x^i)!=0){
					cout<<(x^i)+i<<"\n";
					break;
				}
				i++;
			}
		}else{
			int k=__builtin_popcount(x);
			if(k==1){
				cout<<1+(x^1)+n-2<<"\n";
				continue;
			}
			if(k>=n) n=0;
			else n-=k;
			if(n%2==1) n++;
			cout<<n+x<<"\n";
		}
	}
	return 0;
}
一直WA on #2。
D题纯好奇,求思路。

回复

6 条回复,欢迎继续交流。

正在加载回复...