洛谷P1017 進製轉換

2022-02-27 09:02:22 字數 1973 閱讀 2439

我們可以用這樣的方式來表示乙個十進位制數: 將每個阿拉伯數字乘以乙個以該數字所處位置的(值減1)為指數,以10為底數的冪之和的形式。例如:123可表示為 \(1\times 10^2+2\times 10^1+3\times 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\times (-2)^5+1\times (-2)^4+0\times (-2)^3+0\times (-2)^2+0\times (-2)^1 +1\times (-2)^0\)

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

輸入格式:

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

第乙個是十進位制數n(-32768<=n<=32767); 第二個是負進製數的基數-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)

noip2000提高組第一題

簡述一下題意:給出乙個數\(n\)和它要轉換到的進製,要求出在此進製下的數(大於10進製的以16進製制格式表示).

顯然這是一道數學題

如果進製都是正數的很好處理,可以直接用短除法.這裡就不多作贅述了.

然後我們就來考慮一下如果有負數要怎麼處理.不過這個我也講不清..就舉個栗子吧:把15轉化為-3進製。

短除法並且倒序之後結果為1,-2,0。而我們的進製中是不能出現-2的,所以我們可以這樣考慮,-2這位代表的是-3,而1位代表的是9,我們可以把-2這位加上3,這樣本來應該是\(-3*-2=6,變成了-3*1=-3\),差值為\(6-(-3)=9\),正好為其前面一位1代表的數,這是在1進一位變成2即可,最後轉換完就是2,1,0。

所以我們可以直接在得出是負數的位上向前一位借一(??),也就是在作除法的時候在前面一位加一.我認為這個需要自己多出幾個資料研究一下規律.

#includeusing namespace std;

const int n=10000+5;

int n, base;

char num=;

void solve(int n,int base)

else

}int main()

洛谷 P1017 進製轉換

題目描述 我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減1 為指數,以10為底數的冪之和的形式。例如 123可表示為 1 10 2 2 10 1 3 10 0這樣的形式。與之相似的,對二進位制數來說,也可表示成每個二進位制數碼乘以乙個以該數字所處位置的 值...

洛谷 P1017 進製轉換

我們可以用這樣的方式來表示乙個十進位制數 將每個阿拉伯數字乘以乙個以該數字所處位置的 值減1 為指數,以10為底數的冪之和的形式。例如 123可表示為 1 10 2 2 10 1 3 10 0這樣的形式。與之相似的,對二進位制數來說,也可表示成每個二進位制數碼乘以乙個以該數字所處位置的 值 1 為指...

洛谷 P1017 進製轉換

傳送門 該題考察的較為基礎,雖然俺從前沒有學過負進製除法,但是自己短除取餘,找找規律即可 例如,15 2 7 1,但是,題目說餘數不能為負。餘數怎麼求呢,餘數 15 15 2 之所以得到負數,是因為 15 2的絕對值是小於 15的,且為絕對值的最大值。那麼,在餘數為負數時,我們讓商 1即可,即餘數 ...