#include<iostream> #include<vector> using namespace std; long long gettimestamp(int a,int b,int c,int d,int e,int f) { int IsLeapYear=((a%4==0 && a%100!=0) || (a%400==0)); int MonthDay[12]={31,28+IsLeapYear,31,30,31,30,31,31,30,31,30,31}; long long res=0; long long commonyear=365*24*60*60; long long leapyear=366*24*60*60; for(int i=1970;i<a;i++) { if((i%4==0 && i%100!=0) || (i%400==0)) res+=leapyear; else res+=commonyear; } for(int j=1;j<b;j++) res+=MonthDay[j-1]*24*60*60; for(int k=1;k<c;k++) res+=24*60*60; for(int l=1;l<=d;l++) res+=60*60; for(int m=1;m<=e;m++) res+=60; for(int n=1;n<=f;n++) res+=1; return res; }
void PrintTime(long long res) { int year=1970; while(true) { long long secyear=(365+((year%4==0 && year%100!=0) || (year%400==0)))*24*60*60; if(res>=secyear) { year++; res-=secyear; } else break; } int MonthDay[12]={31,28+((year%4==0 && year%100!=0) || (year%400==0)),31,30,31,30,31,31,30,31,30,31}; int month=1,i=0; while(true) { if(res>=MonthDay[i]*24*60*60) { res-=MonthDay[i]*24*60*60; i++; } else { month+=i; break; } } int day=1,j=0; while(true) { if(res>=24*60*60) { res-=24*60*60; j++; } else { day+=j; break; } } int hour = res/3600; res%= 3600; int minute = res/60; res%= 60; int second = res; printf("%04d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second); }
int main() { int T; cin>>T; for(int i=1;i<=T;i++) { int a,b,c,d,e,f,x; scanf("%d-%d-%d %d:%d:%d %d",&a,&b,&c,&d,&e,&f,&x); long long res=gettimestamp(a,b,c,d,e,f); res= (res / (x*60)) * x * 60; PrintTime(res); } }
|