題目鏈接:點擊打開鏈接
題目大意:
要獲得一個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;
}