题目1096:日期差值

注意:日期输入技巧


#include<iostream>
#include<stdio.h>
using namespace std;
 
#define ISYEAR(x) (x%100 !=0 && x%4 ==0)|| x%400==0?1:0
 
int dayOfMonth[13][2]=
{
    0,0,
    31,31,
    28,29,
    31,31,
    30,30,
    31,31,
    30,30,
    31,31,
    31,31,
    30,30,
    31,31,
    30,30,
    31,31
};//每月的天数
 
class Date{
public:
    int Day;
    int Month;
    int Year;
    //计算下一天的日期
    void nextDay()
    {
        Day++;
        if(Day > dayOfMonth[Month][ISYEAR(Year)])
        {
            Day = 1;
            Month ++;
            if(Month >12)
            {
                Month =1;
                Year ++;
            }
        }
    }
};
 
int buf[5001][13][32];//空着了0月0日,方便操作
 
int Abs(int x)
{
    return x <0 ?-x :x;
}
 
int main()
{
    //测试ISYEAR(x)函数
    //if(ISYEAR(2012))
    //{
    //  cout << "Hello world" << endl;
    //}
    Date tmp;//存储日期
    int cnt =0;//记录天数
    tmp.Day = 1;
    tmp.Month = 1;
    tmp.Year = 0; //初始化日期为0年1月1日
    while(tmp.Year !=5001)
    {
        buf[tmp.Year][tmp.Month][tmp.Day]=cnt;
        tmp.nextDay(); //计算下一天日期
        cnt ++; //计数器累加,与原点日期的间隔
    }
    int d1,m1,y1;
    int d2,m2,y2;
 
    while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF)
    {
        scanf("%4d%2d%2d",&y2,&m2,&d2);//输入两个计算的日期,输入技巧
        printf("%d\n",Abs(buf[y2][m2][d2] - buf[y1][m1][d1])+1);
    }
 
    return 0;
}
/**************************************************************
    Problem: 1096
    User: itswyy
    Language: C++
    Result: Accepted
    Time:20 ms
    Memory:9644 kb
****************************************************************/

你可能感兴趣的:(题目1096:日期差值)