信息学奥赛一本通 1050:骑车与走路 | OpenJudge NOI 1.4 12
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1050:骑车与走路 | OpenJudge NOI 1.4 12
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1050:騎車與走路
OpenJudge NOI 1.4 12:騎車與走路
【題目考點】
1. 兩浮點型量判斷相等
由于浮點型量在內存中以二進制形式表示,很多數據并不能精確表示(如0.3),實際存儲的是一個近似值。而由于計算過程不同,對于數學意義上相等的兩個數字,在實際存儲時會有差別,以至于用==判定兩個數是否相等時,表達式的值是false。
例:
要解決這一問題,就是要忽略浮點型量之間的細微差別。
只要兩個浮點型量之間相差的值很小,就認為是相等的。
判斷浮點型量a,b是否相等的表達式:fabs(a-b) < 0.00001(右側是一個很小的數字即可。)
2. if…else if…else語句
【解題思路】
設總距離為s米
- 已知步行速度1.2米每秒,步行所用時間tw=s/1.2t_w = s / 1.2tw?=s/1.2
- 已知騎車前后所用的時間為27+23=5027+23=5027+23=50秒,騎車速度3米每秒,騎車所用時間tb=s/3+50t_b = s / 3 + 50tb?=s/3+50
- 比較twt_wtw?與tbt_btb?,輸出對應的字符串。
由于浮點型量相等時可能被程序認為是不等的(如數學上a等于b但實際判斷時a>b返回true),所以應先判斷二者是否相等。
【題解代碼】
解法1:
#include<bits/stdc++.h> using namespace std; int main() {double s, tw, tb;//s:距離,tw:走路所用時間,tb:騎車所用時間 cin>>s;tw = s / 1.2;tb = 27 + 23 + s / 3;if (fabs(tw - tb) < 0.0001)//判斷浮點型量tw與tb是否相等 cout<<"All";else if (tw > tb)//走路用的時間比騎車多 cout<<"Bike";//騎車更快 else if (tw < tb)//騎車用的時間比走路更多 cout<<"Walk";//走路更快 return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1050:骑车与走路 | OpenJudge NOI 1.4 12的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通(1159:斐波那契数列
- 下一篇: 信息学奥赛一本通(2029:【例4.15