试题 算法提高 计算时间
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定一个t,将t秒转化为HH:MM:SS的形式,表示HH小时MM分钟SS秒。HH,MM,SS均是两位数,如果小于10用0补到两位。
输入格式
第一行一个数T(1<=T<=100,000),表示数据组数。后面每组数据读入一个数t,0<=t<24*60*60。
输出格式
每组数据一行,HH:MM:SS。
样例输入
2
0
86399
样例输出
00:00:00
23:59:59
解题思路:模拟。
AC代码如下:
#include <iostream>
#include <vector>
using namespace std;
struct Time{
int hour,min,sec;
Time(int hh,int mm,int ss):hour(hh),min(mm),sec(ss){ }
Time(){ }
};
vector<Time> vkt;
void transfer(int t){
int h=t/3600;
int m=(t-h*3600)/60;
int s=t-h*3600-m*60;
vkt.push_back(Time(h,m,s));
}
int main(int argc, char** argv) {
int T;
cin>>T;
for(int i=0;i<T;i++){
int t;
cin>>t;
transfer(t);
}
for(int i=0;i<T;i++){
if(vkt[i].hour<10)
cout<<"0";
cout<<vkt[i].hour<<":";
if(vkt[i].min<10)
cout<<"0";
cout<<vkt[i].min<<":";
if(vkt[i].sec<10)
cout<<"0";
cout<<vkt[i].sec<<endl;
}
return 0;
}