这是一道比较水的题目,唯一的问题是数据的处理。
格式输出;不足 1 秒的时间四舍五入到秒。
那就涉及到一点精度的问题,用double存一些数据来保持精度。
//foreverking
#include <vector>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
const int CLK_TCK = 100;
double c1,c2;
//在一行中输出被测函数运行的时间。运行时间必须按照 hh:mm:ss(即2位的 时:分:秒)格式输出;不足 1 秒的时间四舍五入到秒。
//检查是否需要输出0
void check(int x){
if(x < 10)
cout << '0';//小于10请补齐
}
int main(){
int hour,mi,sc;
cin >> c1 >> c2;
double res = (c2 - c1) / CLK_TCK;
hour = res / 3600;
mi = (res - 3600 * hour) / 60;
sc = (res - 3600 * hour - 60 * mi) + 0.5;
check(hour);
cout << hour << ':';
check(mi);
cout << mi << ':';
check(sc);
cout << sc << endl;
}
这里有个小技巧四舍五入的小技巧 int (a+0.5)
。当然你也可以在一开始的时候,(c1 - c2 + 50) / CLK_TCK
效果是一样的,都是为了让不足一秒的当做一秒。你也可以试试向上取整的ceil函数~