要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数 f 的运行时间,我们只要在调用 f 之前先调用 clock(),获得一个时钟打点数 C1;在 f 执行完成后再调用 clock(),获得另一个时钟打点数 C2;两次获得的时钟打点数之差 (C2-C1) 就是 f 运行所消耗的时钟打点数,再除以常数 CLK_TCK,就得到了以秒为单位的运行时间。
这里不妨简单假设常数 CLK_TCK 为 100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。
输入在一行中顺序给出 2 个整数 C1 和 C2。注意两次获得的时钟打点数肯定不相同,即 C1 < C2,并且取值在 [0,107]。
在一行中输出被测函数运行的时间。运行时间必须按照 hh:mm:ss
(即2位的 时:分:秒
)格式输出;不足 1 秒的时间四舍五入到秒。
123 4577973
12:42:59
-
- import java.io.*;
-
- /**
- * @author yx
- * @date 2022-07-15 16:23
- */
- //int实现的是向下取整数,即当n=06,(int)0.6=0,可以通过(int)(n+0.5)来实现四舍五入
- //Math.round()方法实现的是四舍五入,算法为Math.floor(x+0.5)
- //Math.floor()方法实现的是向下取整,int就是向下取整,Math.floor(11.6)=11
- //Math.ceil()方法实现的是向上取整,即Math.ceil(11.1)=12
- //时间输出要记得格式 00:00:00 使用printf("%02d",i);
- public class Main {
- static PrintWriter out=new PrintWriter(System.out);
- static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
- static StreamTokenizer in=new StreamTokenizer(ins);
- public static void main(String[] args) throws IOException {
- in.nextToken();
- int C1=(int) in.nval;
- in.nextToken();
- int C2=(int) in.nval;
- double t1= ((C2-C1)/100.0);
- long ans=Math.round(t1);
- //注意时间格式的输出用printf("%02d")
- System.out.printf("%02d:%02d:%02d",ans/3600,(ans/60)%60,ans%60);
- }
- }