ZZULIOJ 1225: 七彩玫瑰

题目描述

最近专家培育出一种七彩玫瑰,由于数量稀少,需要提前预订,如果本月的某一天预订,可以在下个月的同一天或之前的两天送货。如果下个月没有本月预订的这一天,默认下个月的最后一天或之前的两天送货。小浩同学花大价钱为女票订了一束七彩玫瑰。女票能在生日那天收到小浩的七彩玫瑰吗?

输入

第一行是一个整数n(0<n<100),表示有n组测试数据。

每组数据占一行,由两个日期组成,用空格隔开,第一个日期表示订花日期,第二表日期表示女票生日。

输出

对应每组测试数据,判断第二个日期是否是在送花日期范围内,如果是输出Yes,不是输出No,每个输出占一行。

样例输入

3
2018-01-15 2018-02-14
2017-10-31 2017-10-01
2000-12-29 2001-01-27

样例输出

Yes
No
Yes
#include<stdio.h>
int panduan(int year)
{
	if(year%400==0||year%4==0&&year%100!=0)
			return 1;
		else
			return 0;
}
int youwu(int year,int month,int day)
{
	int k;
	k=panduan(year);
	if(month!=7&&month!=12&&day==31)
		return 0;
	else if(month==1&&day==30)
		return 0;
	else if(month==1&&day==29&&k==0)
		return 0;
	else
		return 1;
}
int benyue(int year,int month,int day)
{
	int i,k,a[13];
	k=panduan(year);
	for(i=1;i<=12;i++)
    {
        if(i==4||i==6||i==9||i==11)
            a[i]=30;
        else if(i==2&&k==0)
            a[i]=28;
        else if(i==2&&k==1)
        	a[i]=29;
        else
        	a[i]=31;
    }
    return a[month];
}
int main()
{
	int n;
	scanf("%d",&n);
	while(n--)
	{
		int year,month,day,a,b,c,i,k,j,flag=0;
		scanf("%d-%d-%d",&year,&month,&day);
		scanf("%d-%d-%d",&a,&b,&c);
		j=youwu(year,month,day);
		if(j==0)
		{
			k=benyue(year,month+1,day);
			for(day=k;day>=k-2;day--)
			{
				if(a==year&&b==month+1&&c==day)
				{
					flag=1;
					break;
				}
				else
					flag=0;
			}	
		}
		else
		{
			k=benyue(year,month,day);
			month++;
			if(month>12)
			{
				year++;
				month=1;
			}
			for(i=1;i<=3;i++)
			{
				if(a==year&&b==month&&c==day)
				{
					flag=1;
					break;
				}
				else
					flag=0;
				day--;
				if(day==0)
				{
					month--;
					day=k;
				}
				if(month==0)
				{
					year--;
					month=12;
				}
			}
		}
		if(flag)
			printf("Yes\n");
		else
			printf("No\n");
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值