1. 程式人生 > >航電ACM入門題目:人見人愛A+B

航電ACM入門題目:人見人愛A+B

航電ACM入門題目:人見人愛A+B

HDOJ上面已經有10來道A+B的題目了,相信這些題目曾經是大家的最愛,希望今天的這個A+B能給大家帶來好運,也希望這個題目能喚起大家對ACM曾經的熱愛。
這個題目的A和B不是簡單的整數,而是兩個時間,A和B 都是由3個整陣列成,分別表示時分秒,比如,假設A為34 45 56,就表示A所表示的時間是34小時 45分鐘 56秒。

Input

輸入資料有多行組成,首先是一個整數N,表示測試例項的個數,然後是N行資料,每行有6個整數AH,AM,AS,BH,BM,BS,分別表示時間A和B所對應的時分秒。題目保證所有的資料合法。

Output

對於每個測試例項,輸出A+B,每個輸出結果也是由時分秒3部分組成,同時也要滿足時間的規則(即:分和秒的取值範圍在0~59),每個輸出佔一行,並且所有的部分都可以用32位整數表示。

Sample Input

2
1 2 3 4 5 6
34 45 56 12 23 34

Sample Output

5 7 9
47 9 30

程式程式碼

#include<stdio.h>
int main( ) {
int N,i,j,k,temp,l;
int a[10],time[3];
int hour,minute,second;
while(scanf("%d",&N)!=EOF) {
    for(i=0;i<N;i++){
        for(j=0;j<6;j++)
            scanf("%d",&a[j]);  //分別輸入兩個陣列

    for(k=0;k<3;k++){
        time[k]=a[k]+a[k+3];  //把當前陣列的時分秒存到time陣列當中
    }
    if(time[1]>=0&&time[1]<=59&&time[2]>=0&&time[2]<=59) {  //判斷分和秒是否在符合的範圍之內
        for(k=0;k<3;k++)
            printf("%d ",time[k]);    //如果符合,那麼輸出time陣列當中的元素
            printf("\n");
            continue;
            }
    for(l=2;l>0;l--)   //如果不符合,那麼利用迴圈來進位制
        if(time[l]>=60) {
            temp=time[l]/60;
            time[l]=time[l]%60;
            time[l-1]=time[l-1]+temp;
    }

    for(k=0;k<3;k++)
        printf("%d ",time[k]);
        printf("\n");
    }
}
return 0;
}