50ptsTLE
查看原帖
50ptsTLE
772909
Lovely_CCCyh___楼主2023/3/18 19:18
#include <bits/stdc++.h>
using namespace std;
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
string ten_to_two(int k)
{
	string h="";
	if(k==0) return "0";
	while(k)
	{
		h=(char)(k%2+48)+h;
		k/=2;
	}
	return h;
}
signed main()
{
	int T=read();
	while(T--)
	{
		int n=read();
		string s="0"; 
		for(int i=1;i<=n;i++)
		{
			int opt=read();
			if(opt==1) s+='0';
			else
			{
				long long x=read();
				string t=ten_to_two(x);
				char c='0';
				if(t.size()>s.size()) swap(s,t);
				while(t.size()<s.size()) t='0'+t;
				for(int i=s.size()-1;i>=0;i--)
				{
					int v=s[i]-48+t[i]-48+c-48;
					if(v>=2) 
					{
						c='1';
						if(v==2) s[i]='0';                                                                                                                                                                                          
						else s[i]='1';
					}
					else
					{
						c='0';
						if(v==1) s[i]='1';
						else s[i]='0';
					}
				}
				s=c+s;
			}
		}
		while(s[0]=='0'&&s.size()>1) s.erase(0,1);
		for(int i=0;i<s.size();i++) putchar(s[i]);
		putchar('\n'); 
	}
	return 0;
}

2023/3/18 19:18
加载中...