列表

详情


CC17. 牛牛的时钟

描述

牛牛在午夜12点(0点0分0秒)正在思考,在 t 秒之后是什么时间。他思考了 n 次这个问题。

输入描述

第一行输入一个正整数 n。
第二行输入 n 个正整数 t ,表示 t 秒之后。    

输出描述

输出 n 行,每行输出 t 秒之后的时间。

示例1

输入:

4
60 61 1 2

输出:

0 1 0
0 2 1
0 2 2
0 2 4

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-03-07

#include<stdio.h>
#include<stdlib.h>
struct Time{
    int hour;//时
    int min;//分
    int s;//秒
};
int main(){
    int n;
    scanf("%d",&n);
    struct Time* time=(struct Time*)malloc(n*sizeof(struct Time));
    int i;
    for(i=0;i<n;i++){
        scanf("%d",&(time+i)->s);
        if(i>0){
            (time+i)->s+=(time+i-1)->s;
        }
    }
    for(i=0;i<n;i++){
        if((time+i)->s>=60){
            (time+i)->hour=(time+i)->s/3600;
            (time+i)->min=(time+i)->s/60%60;
            (time+i)->s=(time+i)->s%60;
        }
    }
    for(i=0;i<n;i++){
        printf("%d %d %d\n",(time+i)->hour,(time+i)->min,(time+i)->s);
    }
}

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-04-17

#include <stdio.h>

typedef struct time {
    int hour;
    int min;
    int sec;
}time_t;

time_t trans_time(int *t)
{
    time_t tm;
    tm.hour = *t/3600;
    tm.min = *t/60 - tm.hour*60;
    tm.sec = *t - tm.min * 60 - tm.hour*3600;
    return tm;
}

int main(void)
{
    int n, i;
    scanf("%d", &n);
    int t_sum = 0;
    int t[n];
    time_t tm[n];
    for(i = 0; i < n; i++) {
        scanf("%d", &t[i]);
    }
    for(i = 0; i < n; i++) {
        t_sum = t_sum + t[i];
        tm[i] = trans_time(&t_sum);
        printf("%d %d %d\n", tm[i].hour, tm[i].min, tm[i].sec);
    }
    
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 304KB, 提交时间: 2022-05-08

#include<stdio.h>
typedef struct Time{
    int h;
    int m;
    int s;
}Time;
int main()
{
    int n=0;
    scanf("%d",&n);
    int* p=(int*)malloc(n*sizeof(int));
    if(NULL==p)
    {
        perror("MALLOC:");
        return 1;
    }
    for(int i=0;i<n;i++)
        scanf("%d",p+i);
    Time a={0};
    for(int i=0;i<n;i++)
    {
        int x=0,y=0;
        x=(a.s+*(p+i))/60;
        a.s=(a.s+*(p+i))%60;
        y=(a.m+x)/60;
        a.m=(a.m+x)%60;
        a.h=(a.h+y)%24;
        printf("%d %d %d\n",a.h,a.m,a.s);   
    }
    
    
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 308KB, 提交时间: 2022-07-24

#include<stdio.h>
int main()
{
    int n,sec,c=0;
    int min=0,hou=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&sec);
        c+=sec;
        if(c>=60)
        {
            min=c/60;
            sec=c-min*60;
            if(min>=60)
            hou=min/60;
            min=min-hou*60;
            printf("%d %d %d\n",hou,min,sec);
        }
        else
            printf("0 0 0");
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 312KB, 提交时间: 2022-07-30

#include<stdio.h>

struct time
{
    int hour;
    int min;
    int sec;
};



void get_time(int n,int * p)
{
    int i,j,sum=0;
    struct time result[n];
    for(i=0;i<n;i++)
    {
        *(p+i)+=sum;
        sum=*(p+i);
        result[i].hour=*(p+i)/3600;
        result[i].min=(*(p+i)%3600)/60;
        result[i].sec=*(p+i)%60;
        printf("%d %d %d\n",result[i].hour,result[i].min,result[i].sec);
    }  
}

int main()
{
    int n,i;
    int t[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&t[i]);
    }
    get_time(n,t);
    return 0;
}

上一题