1515 - 进制转换1
时间限制 : 1 秒
内存限制 : 32 MB
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
题目输入
多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)
题目输出
每行输出对应的二进制数。
输入/输出样例
输入格式
985 211 1126
输出格式
1111011001 11010011 10001100110
C语言解答
#include<stdio.h> #include<string.h> int t[4000]; int chang(int a[4000],int b) { int c=0; while(b!=0) { if(a[0]!=1) { if(a[b-1]%2==1) t[c]=1; else t[c]=0; for(int i=0; i<b; i++) { if(a[i]%2==1) { a[i+1]+=10; } a[i]=a[i]/2; } c++; } else { if(a[b-1]%2==1) t[c]=1; else t[c]=0; a[1]+=10; for(int i=1; i<b; i++) { if(a[i]%2==1) { a[i+1]+=10; } a[i-1]=a[i]/2; } a[b-1]=0; b=b-1; c++; } } return c; } int main() { char a[4000]; int b[4000],c,d,e[4000]; memset(t,0,sizeof(t)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(e,0,sizeof(e)); while(scanf("%s",a)!=EOF) { c=strlen(a); if(a[1]=='\0'&&a[0]=='0') { A1 : printf("0\n"); continue; } for(int i=0; i<c; i++) { b[i]=a[i]-48; } while(b[0]==0) { for(int i=0;i<c;i++) { b[i]=b[i+1]; } c--; if (c==0) goto A1; } d = chang(b,c); for(int i=0; i<d; i++) { e[i]=t[d-i-1]; } for(int i=0; i<d; i++) { printf("%d",e[i]); } printf("\n"); memset(t,0,sizeof(t)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(e,0,sizeof(e)); } return 0; }
C++解答
#include<stdio.h> #include<string.h> char result[1000]; void base_convert(char num[],int s,int e) { int i,flag,k,j,a[1000],b[1000]; for(i=0;i<strlen(num);i++) a[i]=num[i]-48; k=0; while(1) { for(i=0;i<strlen(num);i++) { if(a[i]!=0&&i<strlen(num)-1) { a[i+1]+=(a[i]%e)*s; a[i]/=e; } if(i==strlen(num)-1) { b[k++]=a[i]%e; a[i]/=e; } } flag=0; for(i=0;i<strlen(num);i++) if(a[i]!=0) flag=1; if(!flag) break; } for(j=0,i=k-1;i>=0;i--) result[j++]=b[i]+48; result[j]='\0'; } int main() { char n[31]; while(scanf("%s",n)!=EOF) { base_convert(n,10,2); puts(result); } return 0; }
Java解答
import java.math.BigInteger; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner cin = new Scanner(System.in); while(cin.hasNext()){ System.out.println(new BigInteger(cin.next()).toString(2)); } } }
Python解答
# coding=utf-8 import sys for line in sys.stdin.readlines(): print(bin(int(line)).replace('0b',''))