if( M==1 || M==2 )
{
M+=12;
--Y;
}
//1582年9月3日后:w = (d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
//1582年9月3日前:w = (d+2*m+3*(m+1)/5+y+y/4+5) % 7;
//0是星期一
if( Y < 1582 || Y == 1582 && M < 9 || Y == 1582 && M == 9 && D < 3 ) return (D+2*M+3*(M+1)/5+Y+Y/4+5)%7;
else return (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7;
int c=year/100;
int y=year-c*100;
int week=(c/4)-2*c+(y+y/4)+(13*(month+1)/5)+day-1;
while(week<0){week+=7;}
week%=7;
switch(week)
{
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n");break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 0:printf("Sunday\n");break;
//只有在1582 9 3后使用
}
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string weeks[7]= {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
string months[12]= {"January","February","March","April","May","June","July","August","September","October","November","December"};
int day1(int M,int D,int Y)
{
if( M==1 || M==2 )
{
M+=12;
--Y;
}
if( Y < 1582 || Y == 1582 && M < 9 || Y == 1582 && M == 9 && D < 3 ) return (D+2*M+3*(M+1)/5+Y+Y/4+5)%7;
else return (D+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7;
}
void day2(int month,int day,int year)
{
int c=year/100;
int y=year-c*100;
int week=(c/4)-2*c+(y+y/4)+(13*(month+1)/5)+day-1;
while(week<0){week+=7;}
week%=7;
switch(week)
{
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n");break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 0:printf("Sunday\n");break;
default: ;
}
}
int main()
{
int m, d, y;
while( scanf("%d %d %d",&m, &d, &y), m+d+y )
{
printf("%s\n",weeks[day1(m,d,y)].c_str());
day2(m,d,y);
}
return 0;
}