东华OJ 基础题12 求第几天

问题描述 :

按年、月、日的顺序读入一个日期,输出该日期是这一年中的第几天。

输入说明 :

输入数据为三个正整数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;
}

😋欢迎大伙私信或者评论区交流讨论😋

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值