藍橋杯進製轉換

2021-08-16 15:59:05 字數 1581 閱讀 6299

問題描述

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

2+2*10

1+3*10

0這樣的形式。

與之相似的,對二進位制數來說,也可表示成每個二進位制數碼乘以乙個以該數字所處位置的(值-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)

#include

#include

#include

int n,r,s=0;

char a[20];

int f(int x,int y,int z)

return 0; }

for(i=0;i<-r;i++)

} return 0; }

int main()

} else

} f(i,n,0);

printf("%d=",n);

if(a[0]!='0')

printf("%s",a);

else

for(i=i;i}

printf("(base%d)",r);

return 0; }

藍橋杯 進製轉換

一 十六進製制轉八進位制 問題描述 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由0 9 大寫字母a f組成的字串,表示要轉換的十六進製制正整數,每個十六進製制 數長度不超過100000。輸出格式 輸出n行,每行為輸入對...

藍橋杯 進製轉換

問題描述 編寫函式將十進位制整數按8進製輸出,然後編寫main函式驗證該函式。例如輸入12,則輸出為 12 014,輸入32,則輸出32 040。輸入格式 輸入乙個整數。輸出格式 輸出這個整數的八進位制形式。方法使用除基取餘法。利用陣列,將每次除基取的餘數儲存在陣列中,注意最後資料輸出的陣列下標。i...

藍橋杯 演算法提高 進製轉換

演算法提高 進製轉換 時間限制 1.0s 記憶體限制 256.0mb 問題描述 程式提示使用者輸入三個字元,每個字元取值範圍是0 9,a f。然後程式會把這三個字元轉化為相應的十六進製制整數,並分別以十六進製制,十進位制,八進位制輸出。輸入格式 輸入只有一行,即三個字元。輸出格式 輸出只有一行,包括...