題解 | #Day of Week#
Day of Week
http://www.fangfengwang8.cn/practice/a3417270d1c0421587a60b93cdacbca0
#include <cstdio>
using namespace std;
bool IsLeapYear(int year)
{
return (year%4==0&&year%100!=0)||(year%400==0);
}
int daytab[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
string months[13]={" ","January","February","March","April","May",
"June","July","August","September","October","November","December"};
string week[8]={"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
int calDays(int min_year,int year,int month,int day)
{
int all_days=0;
for(int i=min_year;i<year;i++)
{
if(IsLeapYear(i)){
all_days+=366;
}
else all_days+=365;
}
if(IsLeapYear(year)){
for(int j=1;j<month;j++)
{
all_days+=daytab[1][j];
}
}
else{
for(int j=1;j<month;j++)
{
all_days+=daytab[0][j];
}
}
all_days+=day;
return all_days;
}
int main()
{
int year;
string month;
int day;
//while(scanf("%2d%s%4d",&day,&month,&year))
while(cin>>day>>month>>year)
{
int min_year=1;//第一年第一個(gè)月第一天為星期一
int R_months;
for(int i=1;i<=12;i++)
{
if(months[i]==month)
{
R_months=i;
break;
}
}
int all_days=calDays(min_year, year, R_months, day);
int res=all_days%7;
if(res!=0)
{
cout<<week[res]<<endl;
}
else cout<<week[7]<<endl;
}
return 0;
}