航電ACM入門題目:人見人愛A+B
阿新 • • 發佈:2019-01-02
航電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; }