【NOJ】[1007] 第几天

  • [1007] 第几天

  • 时间限制: 1000 ms 内存限制: 65535 K
  • 问题描述
  • 有一本记录了从1年到9999年的日历,

    假设1年1月1日为第一天,现在问第Y年的第M月的第D天是第几天。


  • 输入
  • 有一本记录了从1年到9999年的日历,
    假设1年1月1日为第一天,现在问第Y年的第M月的第D天是 第几天。
  • 输出
  • 对于每组数据,输出这是第几天。
  • 样例输入
  • 2
    1 1 1
    2 2 2
    
  • 样例输出
  • 1
    398




#include<iostream>
using namespace std;
int Y[5] = { 0,365,730,1095,1461};
int M[13] = { 0,31,59,90,120,151,181,212,243,273,304,334,365};
int main() {
	int n;
	int y, m, d;
	int yy, mm, dd;
	int ans;
	cin >> n;
	while (n--) {
		cin >> y >> m >> d;
		ans = 0;
		bool flag=false;
		if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) flag = true;
		ans += (y - 1) / 400 - (y - 1) / 100;
		yy = (y - 1)/4;
		y = (y - 1) % 4;
		ans += yy*Y[4]+Y[y];
		mm = m - 1;
		ans += M[mm];
		ans += d;
		if (flag&&m > 2) ans++;
		cout << ans << endl;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值