算法題練習系列之(十九): 程序運行時間

--------------------------------------------------------------------------------------------------------------------------------------------------------

時間限制:1秒  空間限制:32768K  代碼長度限制 100 KB

--------------------------------------------------------------------------------------------------------------------------------------------------------

題目描述

要獲得一個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和C1。注意兩次獲得的時鐘打點數肯定不相同,即C1 < C2,
並且取值在[0, 10的7次方]
輸出描述:
在一行中輸出被測函數運行的時間。運行時間必須按照“hh:mm:ss”(即2位的“時:分:秒”)格式輸出;
不足1秒的時間四捨五入到秒。
輸入例子:
123 4577973
輸出例子:
12:42:59

--------------------------------------------------------------------------------------------------------------------------------------------------------

實現思路:

(1).用終止時間減去開始時間,然後將時間除以打點數,然後將其轉換爲時分秒格式即可;
(2).過程中注意下格式化輸出即可。

--------------------------------------------------------------------------------------------------------------------------------------------------------

package com.biyao.algorithm.niuke.a1;

import java.util.Scanner;
public class Main_a1_016 {
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            int start = scan.nextInt();
            int end = scan.nextInt();
            int time = end - start;
            double t = time/100.0;
            int hour = (int)(t/3600);
            int min = (int)((t/3600 - hour)*60);
            double second = (t - hour*3600 - min*60);
            int s = 0;
            if((second-(int)second) < 0.5){
                s = (int)second;
            }else{
                s = (int)second + 1;
            }
            System.out.println((hour<10?"0"+hour:hour) + ":" + (min<10?"0"+min:min) + ":" + (s<10?"0"+s:s));
        }
    }
   
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章