1026. 程式執行時間(15)

舒眉發表於2018-04-16

1026. 程式執行時間(15)

時間限制
200 ms
記憶體限制
65536 kB
程式碼長度限制
8000 B
判題程式
Standard
作者
CHEN, Yue

要獲得一個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

分析:

① (after-first)/100是求得秒,但在程式碼中是整數,(在這不方便用浮點數),而判斷對100求餘的值代表是否>=50,從而滿足題上要求的“不足1秒的時間四捨五入到秒”。

②對於小時、分鐘、秒的計算方法:總秒數/3600=hour,總秒數%3600/60=minutes,總秒數%60=seconds。

程式碼展示:

#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
    int first,after;
    cin >> first >> after;
    int s;
    s = after-first;
    if(s%100>=50)
        s = s/100+1;
    else
        s/=100;
    printf("%02d:%02d:%02d",s/3600,s%3600/60,s%60);
    return 0;
}

相關文章