1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int main(){ // [1] 输入变量:y-年,m-月,d-日,h-时,k-要增加的小时数 int y,m,d,h,k,n; cin>>y>>m>>d>>h>>k; // [2] 判断当前月份m的天数n,处理闰年2月的特殊情况 if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12){ n=31; // 大月有31天 }else if(m==4 || m==6 || m==9 || m==11){ n=30; // 小月有30天 }else if(m==2 && (y%400==0 || (y%100!=0 && y%4==0))){ n=29; // 闰年的2月有29天 }else{ n=28; // 平年的2月有28天 } // [3] 定义时间进位变量:h_2-最终小时,h_3-小时进位到天的数量;d_2-最终天数,d_3-天进位到月的数量;m_2-最终月份,m_3-月进位到年的数量;y_2-最终年份 int h_2=0,h_3=0,d_2=0,d_3=0,m_2=0,m_3=0,y_2=0; // [4] 计算小时部分:最终小时为(h+k)模24,进位天数为(h+k)除以24的商 h_2=(h+k)%24; h_3=(h+k)/24; // [5] 计算天数部分:判断天数加进位后是否超过当月天数 if(d+h_3>n){ d_2=(d+h_3)%n; // 最终天数为天数加进位后模当月天数 d_3=(d+h_3)/n; // 进位到月的数量为天数加进位后除以当月天数的商 }else{ d_2=d+h_3; // 未超过则天数直接相加 } // [6] 计算月份部分:判断月份加进位后是否超过12 if(m+d_3>12){ m_2=(m+d_3)%12; // 最终月份为月份加进位后模12 m_3=(m+d_3)/12; // 进位到年的数量为月份加进位后除以12的商 }else{ m_2=(m+d_3); // 未超过则月份直接相加 } // [7] 计算年份部分:最终年份为原年份加月份进位的数量 y_2=y+m_3; // [8] 输出最终的年、月、日、时 cout<<y_2<<" "<<m_2<<" "<<d_2<<" "<<h_2; return 0; }
- 1
信息
- ID
- 945
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者