题目描述
HDOJ 上面已经有十来道 A+B 的题目了,相信这些题目曾经是大家的最爱,希望今天的这个 A+B 能给大家带来好运,也希望这个题目能唤起大家对 ACM 曾经的热爱。
这个题目的 AA 和 BB 不是简单的整数,而是两个时间,AA 和 BB 均由 33 个整数组成,分别表示时、分、秒。比如,假设 AA 为 34 45 56,就表示 AA 所表示的时间是 3434 小时 4545 分钟 5656 秒。
输入格式
输入第一行包含一个正整数 T\ (T\le 10)T (T≤10),表示测试数据组数。
每组测试数据占一行,包含六个整数 AH,AM,AS,BH,BM,BSAH,AM,AS,BH,BM,BS,分别对应时间 AA 和时间 BB 的时、分、秒。
0\le AH,BH\le 50000≤AH,BH≤5000
0\le AM,BM,AS,BS\le 590≤AM,BM,AS,BS≤59
输出格式
对于每组测试数据输出一行,即时间 AA 加上时间 BB 后的时、分、秒。
#include
int main()
{
int n,m,i,a[10],b[10],c[10],x,y;
scanf("%d\n",&n);
for(m=1;m<=n;m++)
{
for(i=1;i<=3;i++) scanf("%d ",&a[i]);
for(i=1;i<=3;i++) scanf("%d ",&b[i]);
if(m!=n) scanf("\n");
x=(a[3]+b[3])/60,c[3]=(a[3]+b[3])%60;
y=(a[2]+b[2]+x)/60,c[2]=(a[2]+b[2]+x)%60;
c[1]=a[1]+b[1]+y;
for(i=1;i<=3;i++) printf("%d ",c[i]);
printf("\n");
}
return 0;
}
#include <stdio.h>
struct Time {
int hour;
int minute;
int second;
};
// 将时间加上秒数
void add_seconds(struct Time *time, int seconds) {
time->second += seconds;
while (time->second >= 60) {
time->second -= 60;
++time->minute;
}
while (time->minute >= 60) {
time->minute -= 60;
++time->hour;
}
}
int main(int argc, char *argv[]) {
int t;
scanf("%d", &t);
for (int i = 0; i < t; ++i) {
int a_hour, a_minute, a_second, b_hour, b_minute, b_second;
scanf("%d%d%d%d%d%d", &a_hour, &a_minute, &a_second, &b_hour, &b_minute, &b_second);
struct Time a = {a_hour, a_minute, a_second};
add_seconds(&a, b_hour * 3600 + b_minute * 60 + b_second);
printf("%d %d %d\n", a.hour, a.minute, a.second);
}
return 0;
}