AcWing 3554. 二进制
原题链接
简单
作者:
YG47
,
2021-06-02 20:33:01
,
所有人可见
,
阅读 184
#include<iostream>
#include<bitset>
#include<cstring>
#include<cmath>
using namespace std;
int t,cnt;
int a[100];
long long p;
int main(){
bitset<32> bint;
cin>>t;
long long k=pow(2,32);
while(t--){
memset(a,0,sizeof a);
cin>>bint;
p=bint.to_ulong();//二进制转化为十进制
p+=1;//改成p=bint.to_ulong()+1的话 在本地编译能过 在acwing就过不了- - 有大佬可以在评论区解释一下吗
if(p>=k) cout<<1;//符号位
cnt=0;
while(p){//十进制转化为二进制
a[cnt]=p%2;
cnt++;
p/=2;
}
for(cnt=32;cnt>0;cnt--) cout<<a[cnt-1];
cout<<endl;
memset(a,0,sizeof a);
p=bint.to_ulong();
p+=3;
if(p>=k) cout<<1;
cnt=0;
while(p){
a[cnt]=p%2;
cnt++;
p/=2;
}
for(cnt=32;cnt>0;cnt--) cout<<a[cnt-1];
cout<<endl;
}
return 0;
}