PAT - 1026 程序運行時間

題目鏈接:點擊打開鏈接

 

題目大意:

要獲得一個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, 10^7^]。

輸出格式:

在一行中輸出被測函數運行的時間。運行時間必須按照“hh:mm:ss”(即2位的“時:分:秒”)格式輸出;不足1秒的時間四捨五入到秒。

輸入樣例:

123 4577973

輸出樣例:

12:42:59

解題思路:略。

 

AC代碼

方法一:

#include<bits/stdc++.h>
#include<cmath>

#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f

using namespace std;

typedef long long ll;

int main()
{
    int a,b,c;

    scanf("%d%d",&a,&b);
    c=floor((b-a)/100.0+0.5);
    int h,m,s;
    h=c/3600;
    m=(c-h*3600)/60;
    s=c-h*3600-m*60;
    printf("%02d:%02d:%02d",h,m,s);
    return 0;
}

方法二:

#include<bits/stdc++.h>
#include<cmath>

#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f

using namespace std;

typedef long long ll;

int main(){
  int a,b,c;

  scanf("%d%d",&a,&b); // 保留 n位小數    那就要在 n+1 位做文章
  c=floor((b-a)/100.0+0.5);  // 1.1==1    1.5==1     ceil   1.1==2  1.0==1
  //   1.5    2       2       1.6     2.1   2        1.4   1    1.9   1
  printf("%02d:%02d:%02d",c/3600,c%3600/60,c%60);//c%3600/60 -> c%3600 :算出小時餘下的時間;c%3600/60 :/60求分鐘。
//  printf("%.0f");
  
 return 0;
}

 

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