问题描述:
北京时间与美国时间相差16个小时,即美国时间比北京时间慢16小时,输入n组北京时间,求出对应的美国时间。
输入:2
2018 07 02 08 22
2018 07 01 08 21
输出:
2018 07 01 16 22
2018 06 30 16 21
代码:
#include<iostream>
#include<stdio.h>
using namespace std;
int days[2][13]={
{0,31,29,31,30,31,30,31,31,30,31,30,31},
{0,31,28,31,30,31,30,31,31,30,31,30,31}
};
int isreap(int year){
if((year%4==0&&year%100!=0)||year%400==0){
return 1;
}
else{
return 0;
}
}
void dif(int a[5]){
if(a[3]>=16){
printf("%d %d %d %d %d",a[0],a[1],a[2],a[3],a[4]);
}
else{
if(a[2]==1){
if(a[1]>1){
if(isreap(a[0])==1){
a[2]=days[0][a[1]-1];
a[1]=a[1]-1;
}
else{
a[2]=days[1][a[1]-1];
a[1]=a[1]-1;
}
}
else{
a[0]=a[0]-1;
a[1]=12;
a[2]=31;
}
}
else{
a[2]=a[2]-1;
}
printf("%d %d %d %d %d\n",a[0],a[1],a[2],(24-16+a[3]),a[4]);
}
}
int main(){
int n;
scanf("%d",&n);
while(n--){
int a[5];
scanf("%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4]);
dif(a);
}
return 0;
}