计算时间(蓝桥杯 提高题)


题目正文

给定一个t,将t秒转化为HH:MM:SS的形式,表示HH小时MM分钟SS秒。HH,MM,SS均是两位数,如果小于10用0补到两位。

输入

第一行一个数T(1< =T< =100,000),表示数据组数。后面每组数据读入一个数t,0< =t< 246060。

输出

每组数据一行,HH:MM:SS。

超时代码

代码:

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
    
    
    int T;
    cin>>T;
    while(T--)
    {
    
    
        int t;
        cin>>t;
        if(t>(24*60*60) || t<0)
            break;
        else
        {
    
    
        //int m=t%3600;
        int HH=t/3600;
        int MM=t%3600/60;
        int SS=t%3600%60;
        if(HH<10)
            cout<<"0"<<HH;
        else
            cout<<HH;
        if(MM<10)
            cout<<":0"<<MM;
        else
            cout<<":"<<MM;
        if(SS<10)
            cout<<":0"<<SS<<endl;
        else
            cout<<":"<<SS<<endl;
        }

    }
}

正确代码

代码:

#include<iostream>
#include<stdio.h>
using namespace std;
int a[100000][3];
int main()
{
    
    
    int T;
    cin>>T;
    for(int i=0;i<T;i++)
    {
    
    
        int t;
        cin>>t;
        if(t>(24*60*60) || t<0)
            break;
        else
        {
    
    
           a[i][0]=t/3600;
           a[i][1]=t%3600/60;
           a[i][2]=t%3600%60;
        }

    }
    for(int i=0;i<T;i++)
        printf("%02d:%02d:%02d\n",a[i][0],a[i][1],a[i][2]);
    return 0;
}

总结

我第一次写的代码是超时了,超时的原因是没有用数组存,在第二次的时候我改进了一下代码成功了,还是很开心的。

猜你喜欢

转载自blog.csdn.net/MarigoldLi/article/details/117912177