⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku2846.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>

int leapcnt[301];
int mcnt[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 isLeap(int y)
{
	if (y % 4 == 0 && y % 100 != 0)
		return 1;
	if (y % 400 == 0)
		return 1;
	return 0;
}

void init()
{
	int i;
	leapcnt[0] = 0;
	for (i = 0; i < 300; i++)
	{
		leapcnt[i + 1] = leapcnt[i] + isLeap(i + 1998);
	}
}

int getTotal(int y, int m, int d)
{
	int ans, i, leap, tmp;
	leap = isLeap(y);
	y -= 1998;
	ans = y * 365 + leapcnt[y];
	for (i = 0; i < m; i++)
		ans += mcnt[leap][i];
	ans += d;
	return ans;
}

void Solve(int t)
{
	int yeara,yearb,montha,monthb,daya,dayb,totala,totalb, dis;
	scanf("%d/%d/%d %d/%d", &montha, &daya, &yeara, &monthb, &dayb);
	yearb = yeara;
	if (montha == 12 && monthb == 1)
		yearb++;
	if (montha == 1 && monthb == 12)
		yearb--;
	totala = getTotal(yeara, montha, daya);
	totalb = getTotal(yearb, monthb, dayb);
	dis = totala - totalb;
	printf("%d ", t);
	if (dis > 7 || dis < -7)
		printf("OUT OF RANGE\n");
	else if (dis == 0)
		printf("SAME DAY\n");
	else if (dis > 0)
		printf("%d/%d/%d IS %d DAY%s PRIOR\n", monthb, dayb, yearb, dis, dis == 1 ? "" : "S");
	else
		printf("%d/%d/%d IS %d DAY%s AFTER\n", monthb, dayb, yearb, -dis, -dis == 1 ? "" : "S");
}

int main()
{
	int T, t;
	init();
	scanf("%d", &T);
	for (t = 1; t <= T; t++)
		Solve(t);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -