注意:日期输入技巧
#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
****************************************************************/