文章

2

粉丝

0

获赞

5

访问

434

头像
日期差值 题解:
P1290 上海交通大学/西北工业大学机试题
发布于2026年3月27日 16:29
阅读数 281

同一年和不同年的情况分开考虑

#include <iostream>

using namespace std;

bool isRun(int year)
{
	if( year % 400 == 0 || (year % 4 == 0 && year % 100))
		return true;
	return false;
}

int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int main()
{
	int n, m;
	while(cin >> n >> m)
	{
		int ans = 0;
		if(n > m) swap(n, m);
		int sy, sm, sd, ey, em, ed;
		sy = n / 10000, sm = n % 10000 / 100, sd = n % 100;
		ey = m / 10000, em = m % 10000 / 100, ed = m % 100;

		if(sy == ey)
		{
			if(isRun(ey)) days[2] = 29;
			else days[2] = 28;
			for(int i = sm; i < em; ++i)
				ans += days[i];
			ans -= sd - 1;
			ans += ed;
		}
		else
		{
			if(isRun(sy))
			{
				ans += 366;
				days[2] = 29;
			}
			else
			{
				ans += 365;
				days[2] = 28;
			}
			for(int i = 1; i < sm; ++i)
				ans -= days[i];
			ans -= sd - 1;
			for(int i = sy + 1; i < ey; ++i)
				if(isRun(i))
					ans += 366;
				else
					...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发