思路
把总天数算出来然后%7最后根据结果来判断输出什么string就可以了
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int year[3010];
int month1[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int month2[15]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int tran(string x)
{
if(x=="January")return 1;
if(x=="February")return 2;
if(x=="March")return 3;
if(x=="April")return 4;
if(x=="May")return 5;
if(x=="June")return 6;
if(x=="July")return 7;
if(x=="August")return 8;
if(x=="September")return 9;
if(x=="October")return 10;
if(x=="November")return 11;
if(x=="December") return 12;
}
bool isyeap(int x)
{
if((x%4==0&&x%100!=0)||x%400==0)return true;
return false;
}
int cal(int d,int m,int y)
{
int sum=year[y];
if(isyeap(y))
{
for(int i=1;i<m;i++)sum+=month2[i];
}
else
{
for(int i=1;i<m;i++)sum+=month1[i];
}
sum+=d;
return sum;
}
string tran2(int x)
{
if(x==1)return "Monday";
if(x==2)return "Tuesday";
if(x==3)return "Wednesday";
if(x==4)return "Thursday";
if(x==5)return "Friday";
if(x==6)return "Saturday";
if(x==0)return "Sunday";
}
int main()
{
for(int i=2;i<=3005;i++)
{
if(isyeap(i-1))year[i]=year[i-1]+366;
else year[i]=year[i-1]+365;
}
int d,y;
string m1;
while(cin>>d>>m1>>y)
{
int m=tran(m1);
int temp=cal(d,m,y);
cout<<tran2(temp%7)<<endl;
}
return 0;
}