欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

算法笔记 — 进制转换(大数运算-十进制转二进制)

程序员文章站 2022-07-15 09:36:04
...

 

题目链接:http://www.codeup.cn/problem.php?cid=100000579&pid=2

题目描述

将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

输入

多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)

输出

每行输出对应的二进制数。

样例输入

985
211
1126

样例输出

1111011001
11010011
10001100110

大数以字符串的形式输入...

#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
char ss[33];
int s[33]; 
char ans[1111];
int main(){
    ll n;
    while(cin>>ss){
    	int len=strlen(ss);
    	int cnt=0;
    	for(int i=0;i<len;i++){
    		s[i]=ss[i]-'0';
		}
		int sum=1;
		int t;
		while(sum){
			sum=0;
			for(int i=0;i<len;i++){
				t=s[i]/2;
				sum+=t;
				if(i==len-1){
					ans[cnt++]=s[i]%2+'0';
				}else{
					s[i+1]+=s[i]%2*10;
				}
				s[i]=t;
			}
		}
        for(int i=cnt-1;i>=0;i--){
            cout<<ans[i];
        }
        cout<<endl;
    }
    return 0;
}

 

相关标签: 进制转换 大数