我解決了我們需要使用 double 的問題
檢查 a*b >= c 和 0 <= a,b,c <= 10^18
我的代碼:
unsigned long long int a,b,c;
cin >> a >> b >> c;
if(a*b >= c){
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
我的答案中的錯誤在哪里?這個問題中最難的是找到可以支持 10^36 的正確資料型別
uj5u.com熱心網友回復:
像這樣的大值的乘法a,b=10^10會給出錯誤的結果,因為它可能會超過最大值unsigned long long
但是您可以檢查等效除法(以防萬一b>0)
a * b >= c
a >= c / b
但是請注意整數除法會導致地板,所以我們應該使用天花板向上
a >= (c b - 1) / b
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/516803.html
標籤:C 数学
