P1017 進製轉換(C 數論)

2021-10-02 11:21:22 字數 1470 閱讀 6917

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

1 * 102+2 * 101+3 * 100

這樣的形式。

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

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

110001=1×(−2) 5+1×(−2) 4+0×(−2) 3+0×(−2)2+0×(−2) 1+1×(−2) 0

設計乙個程式,讀入乙個十進位制數和乙個負進製數的基數, 並將此十進位制數轉換為此負進製下的數。

輸入的每行有兩個輸入資料。

第乙個是十進位制數 n。 第二個是負進製數的基數 −r。

輸出此負進製數及其基數,若此基數超過 10,則參照 16 進製的方式處理。

輸入 #1

30000 -2

輸出 #1

30000=11011010101110000(base-2)

輸入 #2

-20000 -2

輸出 #2

-20000=1111011000100000(base-2)

輸入 #3

28800 -16

輸出 #3

28800=19180(base-16)

輸入 #4

-25000 -16

輸出 #4

-25000=7fb8(base-16)

【資料範圍】

對於 100% 的資料,−20≤r≤−2,∣n∣≤37336。

noip2000提高組第一題

其實就是個數學知識,負進製在輾轉相除的時候若餘數為負,則給餘數減去進製數再給商加一。

#include

using

namespace std;

char z[20]

=;intmain()

else

}for

(int j = i-

1; j >=

0; j--

) cout << k[j]

; cout <<

"(base"

<< m <<

")";

return0;

}

P1017 進製轉換

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

P1017 進製轉換

題目描述 我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減11 為指數,以1010為底數的冪之和的形式。例如 123123可表示為 1 times 10 2 2 times 10 1 3 times 10 01 10 2 2 10 1 3 10 0這樣的形式...

P1017 進製轉換

我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減11 為指數,以1010為底數的冪之和的形式。例如 123123可表示為 1 times 10 2 2 times 10 1 3 times 10 01 102 2 101 3 100這樣的形式。與之相似的,對...