蛤玮准备礼物

1878: 蛤玮准备礼物

Description


蛤玮的妹子要过生日了,经过千挑万选,蛤玮决定给妹子买一盒水彩铅笔,然而卖多少个才合适呢.机智的蛤玮决定数一数今天是妹子出生的第多少天,然后就买那么多根铅笔.

给出蛤玮妹子的生日和今天的日期,求蛤玮一共需要买多少.

注意:生日当天算第0天.

Input


T(1<=T<=1000),表示数据组数.

每组数据一行y1,m1,d1,y2,m2,d2,其中y1,m1,d1表示妹子生日的年月日,y2,m2,d2表示蛤玮所在时空的当前天的年月日.

(1900<=y<=1000000, 1<=m<=12, 1<=d<=当月应有天数).输入保证当前天在妹子生日之后.

Output


每组数据输出一行,蛤玮要买多少根铅笔.

Sample Input

2
1995 10 24 1995 10 25
1996 1 9 1996 3 7

Sample Output

1
58

AC代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
bool year(int x){
    if(x%400==0||(x%4==0&&x%100!=0))
	return 1;
	else return 0;
}
int math(int y,int m){
    if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
        return 31;
    else if(m==2)
        return year(y)?29:28;
    else
        return 30;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int y1,m1,d1,y2,m2,d2;
        int num1,num2,sum;
        scanf("%d %d %d %d %d %d",&y1,&m1,&d1,&y2,&m2,&d2);
        num1=0;num2=0;sum=0;
        for(int i=1; i<m1; i++)
            num1+=math(y1,i);
        num1+=d1;
        for(int i=1; i<m2; i++)
            num2+=math(y2,i);
        num2+=d2;
        if(y1==y2)
        {
            printf("%d\n",num2-num1);
            continue;
        }
        else
        {
            sum+=year(y1)?366-num1+num2:365-num1+num2;
            if((y2-1-(y1+1))>400)//400年一个循环
            {
                int flag_num=(y2-1-(y1+1))/400;//循环次数
                int flag_sum=0;//循环数值
                for(int i=y1+1; i<=y1+400; i++)
                    flag_sum+=year(i)?366:365;
                sum+=flag_num*flag_sum;
                for(int i=y1+flag_num*400+1; i<y2; i++)
                    sum+=year(i)?366:365;
            }
            else//不足400年
            {
                for(int i=y1+1; i<y2; i++)
                    sum+=year(i)?366:365;
            }
            printf("%d\n",sum);
        }
    }
    return 0;
}


你可能感兴趣的:(蛤玮准备礼物)