给定一个长度为 3232 位的二进制数 nn,请你计算并输出 n+1n+1 和 n+3n+3 的二进制表示结果。
注意,结果不能忽略前导 00(不够 32 位的用前导 0 补足 32位,超过 32 位的不用补前导 0)。
输入格式
第一行包含整数 TT,表示共有 TT 组测试数据。
每组数据占一行,包含一个长度为 3232 的 0101 字符串。
输出格式
每组数据输出两行,第一行为 n+1n+1 的二进制表示结果,第二行为 n+3n+3 的二进制表示结果。
数据范围
1≤T≤1001≤T≤100
输入样例:
2
00000000000000000000000000000000
00000000000000000000000000000001
输出样例:
00000000000000000000000000000001
00000000000000000000000000000011
00000000000000000000000000000010
00000000000000000000000000000100
简单的模拟二进制加法
逢二进一
注意
不够 32 位的用前导 0 补足 32位,超过 32 位的不用补前导 0
#include<iostream>
#include<string>
using namespace std;
int main()
{
int t;
cin>>t;
char s[33];
while(t--)
{
int p=0;
for(int i=0;i<32;i++)
cin>>s[i];
int k=s[31]+1;
s[31]=s[31]+1;
int g=31;
while(k>'1')
{
s[g]=s[g]-2;
g--;
k=s[g]+1;
s[g]=s[g]+1;
if(g==-1)
{
p=1;
cout<<1;
}
}
for(int i=0;i<32;i++)
cout<<s[i];
cout<<endl;
k=s[30]+1;
s[30]=s[30]+1;
int u=30;
if(p==1)
cout<<1;
while(k>'1')
{
s[u]=s[u]-2;
u--;
k=s[u]+1;
s[u]=s[u]+1;
if(u==-1)
cout<<1;
}
cout<<s<<endl;;
}
}