10進位制 VS 2進位制
Codeup網址:http://codeup.cn/problem.php?cid=100000593&pid=5
問題 : 10進位制 VS 2進位制
時間限制: 1 Sec 記憶體限制: 32 MB
題目描述
對於一個十進位制數A,將A轉換為二進位制數,然後按位逆序排列,再轉換為十進位制數B,我們稱B為A的二進位制逆序數。
例如對於十進位制數173,它的二進位制形式為10101101,逆序排列得到10110101,其十進位制數為181,181即為173的二進位制逆序數。
輸入
一個1000位(即10^999)以內的十進位制數。
輸出
輸入的十進位制數的二進位制逆序數。
樣例輸入
985
樣例輸出
623
AC程式碼:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
int main(){
char str[1001];
while(scanf("%s",str)!=EOF){
int kk=strlen(str),str1[1001],buf[1001],arr[1001];
memset(buf,0,sizeof(buf));
memset(arr,0,sizeof(arr));
for(int i=0;i<kk;i++){
str1[i]=str[i]-'0';
}
int sum=1,k=0,d=0;
while(sum){
sum=0;
for(int i=0;i<kk;i++){
d=str1[i]/2;
sum+=d;
if(i==kk-1){
buf[k++]=str1[i]%2;
}
else{
str1[i+1]+=(str1[i]%2)*10;
}
str1[i]=d;
}
}
int i,j,i2=0,per;
for(i=0;i<k;){
int carry=0;
for(j=i;j<k;j++){
int temp=buf[j]+carry*2;
carry=temp%10;
buf[j]=temp/10;
}
arr[per++]=carry;
while(buf[i]==0){
i++;
}
}
for(int i=per-1;i>=0;i--){
printf("%d",arr[i]);
}
per=0;
printf("\n");
}
return 0;
}
相關文章
- 進位制詳解:二進位制、八進位制和十六進位制
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- Qt進位制轉換(十進位制轉十六進位制)QT
- 口算 16 進位制轉換 10 進位制,但只適合兩位的 16 進位制
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- n進位制轉十進位制
- 十進位制轉十六進位制
- 關於10進位制轉2進位制的C語言程式碼C語言
- 二進位制、十進位制與十六進位制相互轉化
- printf()將10進位制數安照輸出16進位制,8進位制輸出
- C printf按8進位制、10進位制、16進位制輸出以及高位補0
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 十進位制——二 (八、十六 )進位制
- 計算機求解10進位制轉換任意進位制計算機
- 2^k進位制數
- 進位制
- C語言中printf打出2進位制與16進位制數C語言
- 二進位制與二進位制運算
- 二進位制轉十進位制快速方法
- oracle_16進位制與10進位制轉換小示例Oracle
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 十進位制轉二進位制推導(草稿)
- 八進位制,十六進位制和浮點數
- JavaScript十六進位制和八進位制字面量JavaScript
- JavaScript十進位制轉換為二進位制JavaScript
- 負數補碼(16進位制轉10進位制的負數)
- 常用單位進位制
- 二進位制
- (二進位制)
- 進位制與二進位制及相關轉換