#include<iostream>
#include<cstdio>
using namespace std;
int months[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};//平年各月份,闰年各月份
unsigned long long int max_t;//时间秒数最大值
int is_run(int year)//判断闰年
{
if(year%4==0)
{
if(year%400==0)
{
return 1;
}
else if(year%100==0)
{
return 0;
}
else
{
return 1;
}
}
else
{
return 0;
}
}
int main()
{
int t,flag;
unsigned long long int n,year,month,day,h,m,s;
cin>>t;
for(int i=0;i<t;i++)//t个case
{
max_t=0;//初始化
flag=0;
cin>>n>>year>>month>>day>>h>>m>>s;//读入数据
for(int j=0;j<n-1;j++)//计算max_t
{
max_t=2*max_t+1;
}
s=s+max_t;//秒数累加
m=m+s/60;//分钟累加
s=s%60;//秒数取余
h=h+m/60;//小时累加
m=m%60;//分钟取余
day=day+h/24;//天数累加
h=h%24;//小时取余
flag=is_run(year);//判断闰年
month=month-1;
while(day>months[flag][month])//当天数大于当前月份所含天数
{
day=day-months[flag][month];//天数减少
month++;//至下一个月
if(month==12)//一年过去
{
month=0;//月份从1月开始
year++;//年份累加
flag=is_run(year);//判断闰年
}
}
cout<<year<<" "<<month+1<<" "<<day<<" "<<h<<" "<<m<<" "<<s<<endl;//输出
}
return 0;
}
洛谷p2655 2038年问题 普及/提高- 模拟
最新推荐文章于 2024-01-30 12:34:36 发布