演算法訓練 進製轉換

2022-09-04 01:36:07 字數 1838 閱讀 6880

演算法訓練 進製轉換  

時間限制:1.0s   記憶體限制:256.0mb

錦囊1使用進製轉換的方法。

錦囊2和普通的進製轉換類似,還是除p取餘倒著數,但注意取余是取正的部分。

問題描述

我們可以用這樣的方式來表示乙個十進位制數: 將每個阿拉伯數字乘以乙個以該數字所處位置的(值減1)為指數,以10為底數的冪之和的形式。例如:123可表示為 1*102+2*101+3*100這樣的形式。

與之相似的,對二進位制數來說,也可表示成每個二進位制數碼乘以乙個以該數字所處位置的(值-1)為指數,以2為底數的冪之和的形式。一般說來,任何乙個正整數r或乙個負整數-r都可以被選來作為乙個數制系統的基數。如果是以r或-r為基數,則需要用到的數碼為 0,1,....r-1。例如,當r=7時,所需用到的數碼是0,1,2,3,4,5和6,這與其是r或-r無關。如果作為基數的數絕對值超過10,則為了表示這些數碼,通常使用英文本母來表示那些大於9的數碼。例如對16進製數來說,用a表示10,用b表示11,用c表示12,用d表示13,用e表示14,用f表示15。

在負進製數中是用-r 作為基數,例如-15(十進位制)相當於110001(-2進製),並且它可以被表示為2的冪級數的和數:

110001=1*(-2)5+1*(-2)4+0*(-2)3+0*(-2)2+

0*(-2)1 +1*(-2)0

設計乙個程式,讀入乙個十進位制數和乙個負進製數的基數, 並將此十進位制數轉換為此負進製下的數: -r∈{-2,-3,-4,...,-20}

入格式

一行兩個數,第乙個是十進位制數n(-32768<=n<=32767), 第二個是負進製數的基數-r。

出格式

輸出所求負進製數及其基數,若此基數超過10,則參照16進製的方式處理。(格式參照樣例)

輸入1

30000 -2

樣例輸出

30000=11011010101110000(base-2)

樣例輸入

-20000 -2

樣例輸出

-20000=1111011000100000(base-2)

樣例輸入

28800 -16

樣例輸出

28800=19180(base-16)

樣例輸入

-25000 -16

樣例輸出

-25000=7fb8(base-16)

注意:這道題會涉及到對負數取餘,但是一定要保證餘數是正的,如果餘數出來是負的,那麼,需要商+1然後再取餘,直到餘數為正時,可根據  除數*商+餘數 = 被除數  這個式子來理解。

1 #include2

using

namespace

std;

3int

main()421

}22/*cout << temp << " " << n << endl;

23system("pause");

*/24

if(temp > 9)25

28else

if(temp >= 0)29

3233

}34 cout << a << "="

;35for(int i = ans.size() - 1; i >= 0; i--)

36 cout <37 cout << "

(base

"<< r << ")"

;38 }

基礎訓練 進製轉換 進製轉換

sample input 4 7440x80685 1sample output 0x40x70x2c 525957 問題鏈結 uva10473 base conversion 問題簡述 略 問題分析 這是乙個進製轉換問題。include intmain else return 0 學到的點 本題中...

藍橋杯 ALGO 85 演算法訓練 進製轉換

演算法訓練 進製轉換 時間限制 1.0s 記憶體限制 256.0mb 問題描述 編寫乙個程式,輸入乙個二進位制的字串 長度不超過32 然後計算出相應的十進位制整數,並把它列印出來。輸入格式 輸入為乙個字串,每個字元都是 0 或 1 字串的長度不超過32。輸出格式 輸出乙個整數。輸入輸出樣例 樣例輸入...

進製轉換演算法

寫乙個函式char fun int value,int radix 輸入為乙個整數和乙個代表進製的整數,如71,7。71表示要轉化的數,7代表要轉化成7進製數。輸出乙個字串指標,字串為整數value轉化為radix進製後的數字序列。小於10進製數用0 9表示,10進製 35進製用a z表示。例如71...