0分求条(样例已过)
查看原帖
0分求条(样例已过)
1013837
Tiskan_H楼主2024/10/30 19:09

Rt,thx

#include<bits/stdc++.h>
#define int long long
using namespace std;

int s[1000000];
int t,n,tot,st=1,ed=1;

void change(int a){
	int j[3000],tot=0;
	while(a){
		j[++tot]=a&1;
		a>>=1;
	}
	int w=0,k=ed;
	for(int i=1;i<=tot;i++){
		s[k]+=w,s[k]+=j[i];
		if(s[k]>=2) w=s[k]-1;
		s[k]%=2;
		k--;
//		cout<<"-";
	}
	if(w==1) s[k]=1,k--;
	else if(w==2) s[k]=0,s[k--]=1;
	if(k+1<st) st=k+1;
}

signed main(){
	cin>>t;
	while(t--){
		cin>>n;
		for(int i=st;i<=ed;i++) s[i]=0;
		st=300,ed=300;
		for(int i=1;i<=n;i++){
			int k,x;
			cin>>k;
			if(k==1){
				if(st!=ed) ed+=1;
			}else if(k==2){
				cin>>x;
				change(x);
			}
//			for(int i=st;i<=ed;i++)
//				cout<<s[i];
//			cout<<endl;	
		}
		if(st!=ed)
			for(int i=st;i<=ed;i++)
				cout<<s[i];
		else cout<<0;
		cout<<"\n";
	}
	return 0;
}
2024/10/30 19:09
加载中...