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