分析:
本题考察时间转换。我们先看时钟打点数 C2 - C1可以得到总的打点数,而每100打点数,可以换算为1秒,又题目要求不足1秒的时间要四舍五入。我们先举例:
- C2 - C1 = 110,可转换为 1 秒余10打点数,四舍五入为1秒;
- C2 - C1 = 151,可转为为 1 秒余51打点数,四舍五入为2秒;
- C2 - C1 = 2310,可转换为23秒余10打点数,四舍五入为23秒。
综上,在打点树到秒数的转换中最重要的是打点数的最后两位,若其大于等于50,在换算秒数的时候就要加1;否则,直接除以常数 CLK_TCK 即可。
另外,一个常用的时间换算关系:
若给出 n 秒,又要以xx时:xx分:xx秒的形式表示。则有 xx时 = n / 3600,xx分 = n % 3600 / 60,xx秒 = n % 60。
代码(C++)
#include<iostream>
using namespace std;
const int CLK = 100;
int main()
{
int c1, c2;
cin >> c1 >> c2;
int ans = c2 - c1;
if (ans % 100 >= 50) ans = ans / 100 + 1;
else ans = ans / 100;
printf("%02d:%02d:%02d\n", ans / 3600, ans % 3600 / 60, ans % 60);
}