已知 星期几(冬季每日一题 6)_i++星期几(冬季每日一题 6)_i++星期几(冬季每日一题 6)_i++

现在给定一个日期,请你判断是星期几。

注意闰年的 星期几(冬季每日一题 6)_模拟_04 月有 星期几(冬季每日一题 6)_数据_05

满足下面条件之一的是闰年:

年份是 星期几(冬季每日一题 6)_edn_06 的整数倍,而且不是 星期几(冬季每日一题 6)_模拟_07 的整数倍;
年份是 星期几(冬季每日一题 6)_edn_08

输入格式
输入包含多组测试数据。

每组数据占一行,包含一个整数 ​​d​​​ 表示日,一个字符串 ​​m​​​ 表示月,一个整数 ​​y​​ 表示年。

月份 星期几(冬季每日一题 6)_数据_09,依次如下所示:

January, February, March, April, May, June, July, August, September, October, November, December

输出格式
每组数据输出一行结果,输出一个字符串表示给定日期是星期几。

周一至周日依次如下所示:

Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday

数据范围
星期几(冬季每日一题 6)_i++_10
给定日期保证合法。
每个输入最多包含 星期几(冬季每日一题 6)_模拟_07

输入样例:

9 October 2001
14 October 2001

输出样例:

Tuesday
Sunday

#include<iostream>

using namespace std;

const int N = 20;

string s;
int d, m, y;
char month[][15] = {"", "January", "February", "March", "April", "May",
"June", "July", "August", "September", "October", "November", "December"};
char zd[][15] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int get(int y, int m){

int res = 0;
res += days[m];
if(m == 2 && (y % 4 == 0 && y % 100 != 0 || y % 400 == 0))
res ++;

return res;
}

int main(){


while(cin >> d >> s >> y){

for(int i = 1; i <= 12; i++)
if(s == month[i]) m = i;

int sum = 0;

for(int i = 1; i < y; i++){
sum += 365;
if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) sum++;
}
sum += d;
for(int i = 1; i < m; i++) sum += get(y, i);
sum --;

cout << zd[sum % 7] << endl;
}

return 0;
}