1. 程式人生 > >10進位制VS二進位制——大整數進位制轉化

10進位制VS二進位制——大整數進位制轉化

題目描述

    對於一個十進位制數A,將A轉換為二進位制數,然後按位逆序排列,再轉換為十進位制數B,我們乘B為A的二進位制逆序數。     例如對於十進位制數173,它的二進位制形式為10101101,逆序排列得到10110101,其十進位制數為181,181即為173的二進位制逆序數。

輸入描述:

    一個1000位(即10^999)以內的十進位制數。

輸出描述:

    輸入的十進位制數的二進位制逆序數。
示例1

輸入

173

輸出

181
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string jinzhi(int oldbase,string str,int newbase)
{
    string ans="";
    int len=str.size();
    for(int i=0;i<len;)
    {
        int k=0;
        for(int j=i;j<len;j++)
        {
            int temp=(k*oldbase+str[j]-'0')%newbase;//得到的餘數
            str[j]=(k*oldbase+str[j]-'0')/newbase+'0';//得到的商
            k=temp;
        }
        ans+=(k+'0');
        while(str[i]=='0')i++;
    }
    return ans;
}

//完全模擬手算除法,當某一位除以newbase有餘數就應該乘newbase在加上下一位共同組成被除數繼續除!

int main()
{
    string num;//十進位制數
    while(cin>>num)
    {
        string b=jinzhi(10,num,2);
        string ans=jinzhi(2,b,10);
        reverse(ans.begin(),ans.end());
        cout<<ans<<endl;
    }
}


相關推薦

10VS二進位制——整數轉化

題目描述    對於一個十進位制數A,將A轉換為二進位制數,然後按位逆序排列,再轉換為十進位制數B,我們乘B為A的二進位制逆序數。     例如對於十進位制數173,它的二進位制形式為10101101,逆序排列得到10110101,其十進位制數為181,181即為173的二進

2 轉換 | 二進位制、八、十進位制、十六整型常量之間的相互轉換

本篇文章只討論進位制轉換的一些基本問題。 因為不論是幾進位制,對於我們初學者來說如果想要深入理解都是不容易的事情,我一個小白也不會理解的很透徹,所以我現在只能把自己對於進位制轉換的一些想法記下來。 進位制就是進位制,是一種計數方式。 使用進位制的好處是

21水仙花,C++整數

首先宣告,接觸這個問題時候,大整數類,我還不大知道,所以,找了網上的原始碼看了一下思路,自己敲了一遍,給後來人參考。 執行時間51s, #include <iostream> #include <algorithm> #include <time.h> u

演算法設計與分析:第三章 分治 3.3二進位制整數的乘法

/* 二進位制大整數的乘法: 請設計一個有效的演算法,可以進行兩個n 位二進位制大整數的乘法運算 設x = 3141, A = 31 B=41 y = 5327, C = 53,D=27 x*y = AC*2^n + (AD + BC)*2^(n/2) + BD

易學筆記-第5章:數字/5.10 十六、八二進位制

各種進製表示 二進位制開頭:0b >>> 0b1,0b1000,0b11111111  (1, 8, 255) 八進位制開頭 :0o >>> 0o10,0o20,0o30  (8, 16, 24) 十六進位制

牛客網——10 VS 2

題目描述     對於一個十進位制數A,將A轉換為二進位制數,然後按位逆序排列,再轉換為十進位制數B,我們乘B為A的二進位制逆序數。     例如對於十進位制數173,它的二進位制形式為10101101,逆序排列得到10110101,其十進位制數為181,

九度 題目1208:10 VS 2

#include <stdio.h> #include <string.h> char ch1[1000],ch2[4000]; //ch1儲存使用者輸入的10進位制大整數,ch2儲存ch1轉換後的翻轉的2進位制 int num[1000];//儲存ch2轉換的新的2進位制大整數! v

Java程式輸出一個整數二進位制,八,十六

System.out.println("二進位制:" + Integer.toBinaryString(n));   System.out.println("八進位制:" + Integer.toOctalString(n));   System.o

題目1208:10 VS 2

import java.util.Scanner; import java.io.FileReader; import java.io.BufferedReader; import java.io.I

九度OJ-1208:10 VS 2

  本題使用了寫好的高精度整數的模板,將ten2N()函式的輸出方式稍微改了改。 debug過程: ①過載的*運算通過這道題發現了bug:當輸入的int x為0時,由於使用的是BigInt與int逐位乘的演算法,故若BigInt的intSize不為1的話,會return一個

九度OJ 1208: 10 VS 2

#include <stdio.h> #include <stdlib.h> #include <string.h> void swap(int *p, int *q) { int temp; temp = *p; *p = *q; *

題目1138:轉換 (資料10到2

題目描述: 將一個長度最多為30位數字的十進位制非負整數轉換為二進位制數輸出。 輸入: 多組資料,每行為一個長度不超過30位的十進位制非負整數。 (注意是10進位制數字的個數可能有30個,而非30bits的整數) 輸出: 每行輸出對應的二進位制數。 樣例輸入: 0

九度 oj 題目1208:10 VS 2

參考了 根據參考1有 #include <cstdio> #include <cstring> #define MAXN 4000 int main(){ int to[MAXN]; int from[MAXN];

二十四編碼串轉換為32無符號整數(C語言實現)

bool while open 參數錯誤 hint div 第一個字符 bsp opened typedef int BOOL; #define TRUE 1; #define FALSE 0; #define UINT_MAX 0xffffffff

Python: 二進位制、八、十六轉換或者輸出

為了將整數轉換為二進位制、八進位制或十六進位制的文字串,可以分別使用bin() ,oct() 或hex() 函式: >>> x = 1234 >>> bin(x) '0b10011010010' >>> oct(x) '0o2322' >&g

十進位制轉八二進位制 java實現

程式碼 private static void myToOctalString(int a) { String str = ""; while (true) { str = a % 8 + str; a = a / 8; if (a == 0) bre

Python程式設計:二進位制,八,十六與十進位制之間的轉換

進位制轉換的函式 bin() 10進位制轉2進位制 oct() 10進位制轉8進位制 hex()10進位制轉16進位制 int() *進位制轉10進位制 各進位制之間轉換 ↓ 2進位制 8進位制

JAVA 二進位制,八,十六,十進位制間進行相互轉換

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

水題T,二進位制轉16

輸入一個2進位制的數,要求輸出該2進位制數的16進製表示。 在16進位制的表示中,A-F表示10-15 Input第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1行,包括一個以0和1組成的字串,字串長度至少是1,至多是10000Outputn行,每行輸出對應一個輸入。Sampl

10數字轉成62數字

將10進位制數字轉成62進位制數字 先定義62進位制的代表字元: static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b'