HDOJ 1036 输入输出 水
生活随笔
收集整理的這篇文章主要介紹了
HDOJ 1036 输入输出 水
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1036
我也不知道這題考查什么,感覺就是考細心。
1.時間要能正確的讀,輸出的格式要對。
2.結果要四舍五入。
說一下四舍五入的方法,剛從別人那里學的。
假設a為要舍入的數,res為結果。
1.精確到個位。int res = a + 0.5;
2.精確到小數點后第k位。
double a, res, base; int k; double base = pow(10.0, k * 1.0); res = ((int)(a * base + 0.5)) / base;經簡單測試,有效。
PS:上面的高亮顯示貌似有問題啊,base不是C++的保留字吧。
下面是解題代碼。
#include <iostream> using namespace std;int isQualified(char *str) {for (int i = 0;i < strlen(str);i ++){if (str[i] == '-')return 0;}return 1; }int main () {int sectionNum;double totalDist;scanf("%d%lf",§ionNum,&totalDist);char aLine[1000];int teamId;while (scanf("%d",&teamId) != -1){//以秒為單位的總時間double timeInSec = 0.0;int hour,min,sec;int iIsQualified = 1;char aRec[100];for (int i = 1;i <= sectionNum;i ++){//一個記錄scanf("%s",aRec);//如果沒有'-',才需要加入總時間if (isQualified(aRec)){sscanf(aRec,"%d:%d:%d",&hour,&min,&sec);timeInSec += hour * 3600 + min * 60 + sec;}elseiIsQualified = 0;}if (iIsQualified == 0){printf("%3d: -\n",teamId);continue;}double secPerKm = timeInSec / totalDist;int resMin = secPerKm / 60;int resSec = secPerKm - resMin * 60 + 0.5;if (resSec == 60){resSec = 0;resMin ++;}//如果resSec是單數,要補0printf("%3d: %d:%02d min/km\n",teamId,resMin,resSec);}return 0; }轉載于:https://www.cnblogs.com/peaceful-andy/archive/2012/08/19/2646864.html
總結
以上是生活随笔為你收集整理的HDOJ 1036 输入输出 水的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webView loadData 中文乱
- 下一篇: [通告]Nuget服务宕机,出现 503