题目描述:
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t=0,n=0,len=0;
char s[333],s1[333],s3[333];
cin>>t;
int i=1;
int flag=0;
while(i<=t)
{
cin>>s;
flag=1;//加一
int k=0;
for(int j=strlen(s)-1;j>=0;--j)
{
n=s[j]-'0'+flag;
s1[k++]=n%2+'0';//倒着存
flag=n/2;
}
s1[k]=flag+'0';//flag为最后一次进位,若为1 若s1超过32位,则不能省去。若为0,若s1超过32位,则输出时需要省掉这个0
len=k;
if(flag==0)//s[32]==0的情况,倒着输出时s[32]不可输出
for(int j=len-1;j>=0;--j)
{
cout<<s1[j];
}
else
for(int j=len;j>=0;--j)
{
cout<<s1[j];
}
cout<<endl;
flag=3;//加3
k=0;
for(int j=strlen(s)-1;j>=0;--j)
{
n=s[j]-'0'+flag;
s3[k++]=n%2+'0';//倒着存
flag=n/2;
}
s3[k]=flag+'0';
len=k;
if(flag==0)
for(int j=len-1;j>=0;--j)
{
cout<<s3[j];
}
else
for(int j=len;j>=0;--j)
{
cout<<s3[j];
}
cout<<endl;
i++;
}
return 0;
}