题解 | #Day of Week#

Day of Week

https://www.nowcoder.com/practice/a3417270d1c0421587a60b93cdacbca0

#include <iostream>
using namespace std;

int dayTable[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
    }
};
bool IsLeapYear(int year) {                 //判断是否为闰年
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
string monthName[13] = {
    "", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
};
string weekName[7] = {
    "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
};
void sample2_3_7() {
    int a, b, c;
    // char str[9];
    string str;
    while (cin>>c>>str>>a) {
        int number = 0;
        for (int i = 1; i <= 13; ++i) {
            if (str == monthName[i]) {
                b = i;
                break;
            }
        }
        if (a < 1923) {
            for (int i = a + 1; i < 1923; i++) {
                if (IsLeapYear(i)) {
                    number += 366;
                } else {
                    number += 365;
                }
            }
            int row = IsLeapYear(a);
            for (int i = 12; i > b; i--) {
                number += dayTable[row][i];
            }
            number += dayTable[row][b] - c;
            cout<<weekName[(7 - number) % 7];
//          switch (number % 7) {
//          case 0:
//              printf("周日\n");
//              break;
//          case 1:
//              printf("周六\n");
//              break;
//          case 2:
//              printf("周五\n");
//              break;
//          case 3:
//              printf("周四\n");
//              break;
//          case 4:
//              printf("周三\n");
//              break;
//          case 5:
//              printf("周二\n");
//              break;
//          case 6:
//              printf("周一\n");
//              break;
//          }
        } else {
            for (int i = 1923; i < a; i++) {
                if (IsLeapYear(i)) {
                    number += 366;
                } else {
                    number += 365;
                }
            }
            int row = IsLeapYear(a);
            for (int i = 1; i < b; i++) {
                number += dayTable[row][i];
            }
            number += c;
            printf("%s", weekName[number % 7].c_str());
//          switch (number % 7) {
//          case 0:
//              printf("周日\n");
//              break;
//          case 1:
//              printf("周一\n");
//              break;
//          case 2:
//              printf("周二\n");
//              break;
//          case 3:
//              printf("周三\n");
//              break;
//          case 4:
//              printf("周四\n");
//              break;
//          case 5:
//              printf("周五\n");
//              break;
//          case 6:
//              printf("周六\n");
//              break;
//          }
        }
    }
}
int main() {
    void sample2_3_7();
	sample2_3_7();
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务