文章
26
粉丝
0
获赞
8
访问
1.6k
#include<bits/stdc++.h>
using namespace std;
bool isZero(int a[],int len){
for(int i=0;i<len;i++){
if(a[i]!=0){
return false;
}
}
return true;
}
int main(){
string s;
while(cin>>s){
int num[100]={0},a[100]={0},index=0;//a数组中保存余数
int len=s.length();
for(int i=0;i<len;i++){
num[i]=s[i]-'0';
}
//循环截止条件就是整个大数的数组全都是0
while(!isZero(num,len)){
//对余数的判断,因为对2取余的话只需要看最后一位能否被2整除即可
a[index]=num[len-1]%2;
//一个这个操作相当于对整个大数进行了除以2的操作
for(int j=0;j<len;j++){
//对目前的这一位进行除法计算
int m=num[j]/2;
//下一位的数是等于原来下一位的数+目前这一位的余数*10
num[j+1]=num[j+1]+(num[j]%2)*10;
//将目前这一位的数修改为除以2之后的数
num[j]=m;
}
index++;
}
if(index==0){
cout<<0;
}else{
for(int i=index-1;i>=0;i--){
cout<<a[i];
}
}
cout<<endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发