確定進製(經典水題)

2021-06-22 14:35:58 字數 784 閱讀 5447

問題描述:6*9=42 對十進位制來說是錯誤的 但是對13進製來說卻是正確的 即6(13)*9(13)=42(13)

42(13)=4*13+2*1=54;你的任務是編寫一段程式 讀入3個整數,p,q和r 然後確定乙個進製b(2<=b<=16),使得p*q=r。如過b有很多選擇 則輸出最小的那個進製

如果沒有合適的進製,則輸出0

輸入:輸入有t組資料,t在第一行給出。1《=p,q,r<=1000000;

輸出:對於每一次測試樣例輸出第一行。該行包含乙個整數:即令p*q=r成立的最小的b

輸入樣例: 3

6 9 42

11 11 121

2 2 2

輸入樣例 13

3 0思路:先假設等式為b進製,講三個數先轉換為十進位制,利用十進位制的乘法計算等式左邊的結果,在與十進位制的r進行比較,找到相應的b值;若不相等則取b=b+1再來一遍。若b>16,則說明沒有合適的進製能使等式成立

技巧:b不一定要從2開始遍歷 由r=n%k我們可以知道 r一定是要小於k的 所我們只需要找到表示式三個數所含數字中最大的那個值,b則從那個值+1開始遍歷

#includeint max_num(int n)

return max;

}int ic_xy(int n,int p)

return sum;

}int main()

if(amax>16)

amax=0;

printf("%d\n",amax);

}return 0;

}

B Chocolate(經典水題)

做過的原題 include include include include include include include include include include include include include using namespace std void fre define ms x...

POJ 2449 A 經典水題

先求每個點到目地t的最短距離。這一步可以將圖的每條邊反向,做單源最短路求得。然後就是在圖上搜尋。可以用優先佇列來實現搜尋狀態的篩選。f g h g為搜尋到此點已經走過的距離,h為此點到t的最短距離。當第k次搜到t,此時的g h就是第k短路。include include include includ...

1973 確定進製

描述 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有很多選擇,輸出最小的乙個。...