问题描述 :
按年、月、日的顺序读入一个日期,输出该日期是这一年中的第几天。
输入说明 :
输入数据为三个正整数y 、m、d,分别表示年、月、日,整数之间以空格分隔,在行首和行尾没有多余的空格。
输出说明 :
输出一个整数,表示输入的日期是这一年中的第几天,在行首和行尾没有多余的空格。
输入范例 :
2000 12 31
输出范例 :
366
完整C++代码
这种年月日的题,果然还是哈希表用着爽
#include <bits/stdc++.h>
using namespace std;
int main()
{
int y, m, d;
cin >> y >> m >> d;
unordered_map<int, int> map = {{1,31},{3,31},{5,31},{7,31},{8,31},{10,31},{12,31},{4,30},{6,30},{9,30},{11,30}};
int res = 0;
for (int i = 1; i < m; i++) {
if (i == 2) {
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {
res += 29;
} else {
res += 28;
}
} else {
res += map.at(i);
}
}
cout << res + d << endl;
return 0;
}
😋欢迎大伙私信或者评论区交流讨论😋