輸入包含一行或多行,每行包含乙個整數 n。 如果 n = 0 表示輸入結束,否則 n 是乙個 skew 數
對於每乙個輸入,輸出它的十進位制表示。轉換成十進位制後, n 不超過 2的31次-1(2147483647)
10120
200000000000000000000000000000
101000000000000000000000000000000
11100
11111000001110000101101102000
0
44
2147483646
3214748364747
1041110737
skew 數的相鄰位上,基數之間沒有等比關係。計算每一位的基數後,再把乙個 skew 數轉換成十進位制表示就很簡單。對於長度為 k 的 skew 數,最後一位數字的基數為 2的k次-1。由於轉換成十進位制後, n 不超過 2的3次1-1,因此輸入 skew 數的最大長度不超過 31。
用乙個整型陣列 base[31],依次儲存 skew 數最末位、倒數第 2 位、 …..、第 31 位的基數值。使用這個陣列,把每個 skew 數轉換成對應的十進位制數。
base[0] = 1
base[k] = 2的(k+1)次 - 1 = 2 * (2的k次 - 1) + 1 = 2 * base[k -1] + 1
#include #include using namespace std;
int main()
while(true)
sum = 0;
k = strlen(skew);
for(i=0;i
CodeUp 數制轉化
時間限制 1.000 sec 記憶體限制 32 mb 題目描述 求任意兩個不同進製非負整數的轉換 2進製 16進製制 所給整數在long所能表達的範圍之內。不同進製的表示符號為 0,1,9,a,b,f 或者 0,1,9,a,b,f 輸入 輸入只有一行,包含三個整數a,n,b。a表示其後的n 是a進製...
ACM 確定進製(數制轉化問題)
6 9 42 對於十進位制來說是錯誤的,但是對於 13 進製來說是正確的。即,6 13 9 13 42 13 而 42 13 4 131 2 130 54 10 你的任務是寫一段程式讀入三個整數 p q和 r,然後確定乙個進製 b 2 b 16 使得 p q r.如果 b 有很多選擇,輸出最小的乙個...
數制轉化和子網劃分
toc 我們用的百兆千兆網路單位是bps 位元率,即位 秒,bit s 我們說的光纖傳輸速度是百兆,也就是100mbps,而我們使用的傳輸單位是位元組 秒 byte s byte是位元組,而bit是二進位制單元 0bit 1bytc 1024byte 1kb 1024kb 1mb 1024mb 1g...