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 有很多選擇, 輸出最小的乙個。例如: p = 11, q = 11, r = 121. 則有 11(3) * 11(3) = 121(3) 因為 11(3) = 1 * 31 + 1 * 30 =4(10) 和 121(3) = 1 * 32 + 2 * 31 + 1 * 30 = 16(10)。 對於進製 10,有 11(10) * 11(10) =121(10)。這種情況下,應該輸出 3。如果沒有合適的進製,則輸出 0。
輸入有 t 組測試樣例。 t 在第一行給出。每一組測試樣例佔一行,包含三個整數 p、 q、r。 p、 q、 r 的所有位都是數字,並且 1 <= p、 q、 r<= 1,000,000。
對於每個測試樣例輸出一行。該行包含乙個整數:即使得 p * q = r 成立的最小的 b。如果沒有合適的 b,則輸出 0。
3
6 9 42
11 11 121
2 2 2
13
30
選擇乙個進製 b,按照該進製將被乘數、乘數、乘積分別轉換成十進位制。然後判斷等式是否成立。使得等式成立的最小 b 就是所求的結果。分別用乙個字元型陣列儲存 p、 q、 r 的各位數字符號。先以字串的方式讀入 p、 q、 r,然後按不同的進製將它們轉換成成十進位制數,判斷是否相等。
#include using namespace std;
int b2ten(char* x,int b)
ret += num * k;//累加
k *= b;//b的一次,二次,三次....
} return ret;
}int main()
if(palgorism*qalgorism==ralgorism){
cout<
ACM skew數 數制轉化問題
輸入包含一行或多行,每行包含乙個整數 n。如果 n 0 表示輸入結束,否則 n 是乙個 skew 數 對於每乙個輸入,輸出它的十進位制表示。轉換成十進位制後,n 不超過 2的31次 1 2147483647 10120 200000000000000000000000000000 101000000...
萌新必遇進製轉化問題,任意進製轉化
輸入進製 10 輸入數字 15 輸入進製 16 輸出數字 f 此題目其實就是將乙個任意進製先轉化為十進位制,然後將其轉化為對應的進製,很多人一開始都是想這如何讓計算機計算機直接識別我輸入的是幾進製,因為有縣里嘛,計算機能夠自主識別我輸入的是八進位制或十六進製制,比如我在輸入的數字前加0,系統就知道我...
大數問題之26進製轉化
problem description xyz 26進製數是乙個每位都是大寫字母的數字。a b c x y z 分別依次代表乙個0 25 的數字,乙個 n 位的26進製數轉化成是10進製的規則如下 a0a1a2a3 an 1 的每一位代表的數字為a0a1a2a3 an 1 則該xyz 26進製數的1...