描述
为了缓解交通压力、减少空气污染,B市市政府决定在工作日(周一至周五)对机动车进行限行,每辆机动车每周将有一个工作日不能出行,但周末不限行。假设该政策从2000年1月1日起开始执行。限行安排为:
尾号为1和6:周一限行
尾号为2和7:周二限行
尾号为3和8:周三限行
尾号为4和9:周四限行
尾号为5、0和字母:周五限行
已知2000年1月1日为周六,现在给出一些日期和车牌号,求问该机动车在该天是否限行。
关于输入
输入第一行为一个整数n(1<=n<=100),表示测试的组数。
之后输入n行,每一行由一个日期和一个车牌号组成,用空格分隔。日期的格式为“YYYY-MM-DD",例如“2000-01-23”,日期保证在2000年1月1日~9999年12月31日之间;车牌号的格式为6位字符串,由数字和大写字母组成,例如“A123Q6”。
关于输出
输出共n行,对于每一组测试输出一行。如果给出的车辆在给出日期限行,则输出“yes”,否则输出“no”。
例子输入
10
2016-01-04 8WNVKN
4592-11-05 JAR2RU
2470-04-15 O54FSL
7730-08-14 WDI3DO
9895-01-09 1CQZ8N
6293-10-20 V45WMK
5304-10-11 RTDY7U
9810-07-14 NAC5LS
7268-11-07 PWQZ1M
6140-09-20 HJR1QV
例子输出
no
no
no
no
no
yes
no
no
no
no
提示
请考虑闰年。
#include<stdio.h>
#include <iostream>
#include <math.h>
#include<cstdio>
using namespace std;
//这里直接使用了非常好用的"求两个年月日之间的日期数量差"的函数代码,是一个偶然看到的非常巧妙的方案
int day_diff(int year_start, int month_start, int day_start, int year_end, int month_end, int day_end)
{
/*计算给定日期到0年3月1日的天数,相减求天数间隔*/
int y2, m2, d2;
int y1, m1, d1;
m1 = (month_start + 9) % 12;/*日期是否大于三月;与三月间隔多少个月*/
y1 = year_start - m1 / 10;/*如果是1月和2月则不包括当前年*/
d1 = 365 * y1 + y1 / 4 - y1 / 100 + y1 / 400 +