题目描述
算日期,模拟即可,没什么好说的
算法
1.1.1->year.1.1->year.month.1->year.month.day
C++ 代码(应该算比较清晰明了)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
string weekday[7] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
string month[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
int month_day[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
bool run_year(int year){
if(year % 400 == 0) return true;
if(year%4==0 && year%100!=0) return true;
return false;
}
int main(){
int day;
string Month;
int year;
while(cin>>day>>Month>>year){
int sum_day = 0;
//从1.1.1到当年的1.1日的时间
for(int i=1;i<year;i++){
if(run_year(i)){
sum_day += 366;
}else{
sum_day += 365;
}
}
//从当年的1.1日到当年的month月1日
int this_month;
for(int i=0;i<12;i++){
if(month[i]==Month){
this_month = i+1;
break;
}
}
for(int i=1;i<this_month;i++){
sum_day += month_day[i-1];
if(i==2 && run_year(year)){
sum_day++;
}
}
//从当月1日到当前日
sum_day += day-1;
cout<<weekday[sum_day%7]<<endl;
}
}