前言
來進製轉換吧!
做到後面發現前面還有個2031漏網之魚
輕微強迫症決定解決它
補一波知識,以後需要轉換也能直接從這裡copy**,哈哈
題目
基礎知識
十進位制轉r進製規則:十進位制數除以r進製得a,存餘數,再用a除以r進製得a,存餘數……直至a=0。最後所有餘數倒置就是轉換得數。
看這個可能看不大懂,直接想想當初如何把十進位制轉換二進位制的吧!
比如,24,轉換成二進位制就是。。
11000
差不多就這意思(手殘黨畫不出什麼好東西)
然後我們試試三進製!
還是用可憐的24來試試
啊我 cao
我要被我的畫風醜哭了
不管了,驗證一下是不是220,3的0次0+3的1次2+3的2次*2=24!
然後以此就可以類推456789進製了
然後,開始驗證大於十的進製,比如,十六進製制。
來個大點的數,比如31
於是,不管幾進製,只要是從十進位制轉換而來的,就可以用除餘轉化。
同理,如果你想x進製轉換到y進製,只要把它先按位轉換成十進位制,再轉換成y進製就好了。
還有個地方,我們需要把15轉換為十六進製制的f
這個很簡單啊,比如a[i]裡的餘數是15,我們就可以。。
a[i]
='a'
+a[i]-10
;
因為10的話就是a,很好理解噠。
最後還有個小坑小坑小坑坑
負數!負數不能直接轉換,要轉換為正數然後轉換完了再添負號,不然答案不對。。
(我也不知道為什麼)
然後附上ac**
#include
#include
// abs,你懂我也懂。
intmain()
i--;//因為迴圈結束i已經跑到末尾+1去了
for(
;i>=
0;i--)if
(a[i]
>9)
printf
("%c"
,a[i]
+'a'-10
);else
printf
("%d"
,a[i]);
putchar
('\n');
}}
話說最近經常看到馬孟起關雲長趙子龍他們成功ac,只要我在做都能看到那幾個三國大佬,這成功次數和提交次數比例。。。。
這莫非是某個用爬蟲寫了個指令碼抓取網上ac自動提交?
杭電2031 進製轉換
主要是注意把轉換後大於9的化為a,b。再注意一下正負數,中紅色部分就是對這些問題的處理!problem description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 output 為每...
進製轉換(杭電2031)
進製轉換 problem description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 output 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考...
進製轉換(杭電2031)
進製轉換 problem description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報括多個測試例項,每乙個測試例項包括兩個整數n 32位整數 和r 2 r 16,r 10 output 為每乙個測試例項輸出轉換後的數,每乙個輸出佔一行。假設r大於10,則相應的數字規...