#include<stdio.h>
//日期差值
#define ISYEAP(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
};
struct Date{
int Day;
int Month;
int Year;
void nextDay()
{
Day++;
if(Day>dayOfmonth[Month][ISYEAP(Year)])
{
Day=1;
Month++;
if(Month>12)
{
Month=1;
Year++;
}
}
}
};
int buf[50001][13][32];//save the orignal days
int Abs(int x)
{
return x<0?-x:x;
}
int main()
{
Date temp;
int cnt=0;
temp.Day=1;
temp.Month=1;
temp.Year=0;
while(temp.Year!=5001)
{
buf[temp.Year][temp.Month][temp.Day]=cnt;
temp.nextDay();
cnt++;
}
int d1,m1,y1;
int d2,m2,y2;
while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF)
{
int days=buf[y1][m1][d1]-buf[2017][12][4];
days+=1;//At that time the days%7 will be1,2,3,4,5,6,7
printf("%d\n",(days%7+7)%7);
}
}
处理区间问题要预处理(计算星期几)
最新推荐文章于 2022-12-29 19:20:05 发布