确定进制
問題描述
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
3
0
解題思路
此問題很簡單。選擇一個進制B,按照該進制將被乘數、乘數、乘積分別轉換成十進制。
然后判斷等式是否成立。使得等式成立的最小B 就是所求的結果。
分別用一個字符型數組存儲p、q、r 的各位數字符號。先以字符串的方式讀入p、q、r,
然后按不同的進制將它們轉換成成十進制數,判斷是否相等。
?
轉載于:https://www.cnblogs.com/gj-Acit/archive/2012/12/28/2837982.html
總結
- 上一篇: libmemcached安装报错
- 下一篇: (原创)惠州市惠阳区房价偏低的原因深入分