Bitset
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13627 Accepted Submission(s): 10406
Problem Description
Give you a number on base ten,you should output it on base two.(0 < n < 1000)
Input
For each case there is a postive number n on base ten, end of file.
Output
For each case output a number on base two.
Sample Input
1 2 3
Sample Output
1 10 11//方法一 用itoa函数 #include<stdio.h> //这函数太神了,进制转换直接秒过 #include<stdlib.h> int main( ) { __int64 n; while(scanf("%I64d",&n)!=EOF) { char a[10000]; printf("%s\n",itoa(n,a,2)); } return 0; } //方法二 用位运算 #include<stdio.h> int main( ) { int n; while(scanf("%d",&n)!=EOF) { int i,a[100]={0}; for(i=0;n>>1 || n==1;n>>=1,i++) { if(n & 1) a[i]=1; else a[i]=0; } while(i>0) printf("%d",a[--i]); printf("\n"); } return 0; } //方法三 常规进制转换法 #include<iostream> using namespace std; int main() { int n,s; char a[1000]; while(cin>>n) { int i=0; while(n) { s=n%2; n=n/2; a[i]=s+48; i++; } for(s=0;s<i;s++) cout<<a[i-s-1]; cout<<endl; } return(0); }
本文介绍了一种将十进制数转换为二进制数的方法,并提供了三种不同的实现方式:使用itoa函数、位运算及常规进制转换法。通过样例输入输出展示了算法的具体应用。
535

被折叠的 条评论
为什么被折叠?



