文章
74
粉丝
0
获赞
94
访问
8.3k
#include<bits/stdc++.h>
using namespace std;
// 判断闰年
int isLeapYear(int y) {
if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) return 1;
else return 0;
}
// 每个月的最大天数,[0]平年,[1]闰年
int maxDay[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int main(){
int year, month, day;
while(cin >> year >> month >> day) {
// 确保不超过当月最大天数
int leap = isLeapYear(year);
if(day > maxDay[leap][month]) {
cout << maxDay[leap][month] << endl;
continue;
}
// 只取年份后两位
int year2 = year % 100;
// 正确的位运算:年(7位)左移9位,日(5位)左移4位,月(4位)在最低位
int ans = (year2 << 9) | (day << 4) | month;
cout << ans << endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发