⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poj3047.cpp

📁 本人最近在acm.pku.edu.cn上通过的程序
💻 CPP
字号:
#include <algorithm>
using namespace std;

const int D[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const char ANS[7][10] = {"monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" };

struct Date
{
    int year, month, day;
    Date(int y = 0, int m = 0, int d = 0)
        : year(y), month(m), day(d) {}
    bool operator < (Date &a)
    {
        if (year < a. year) return true;
        if (year == a. year && month < a. month) return true;
        if (year == a. year && month == a.month && day < a. day) return true;
        return false;
    }
};

Date a, b(1900, 1, 1);

bool special(int x)
{
    if (x % 400 == 0) return true;
    if (x % 100 != 0 && x % 4 == 0) return true;
    return false; 
}

int daysA(Date x)
{
    int days[13], ret = 0;
    memcpy(days, D, sizeof(days));
    if (special(x. year))
        days[2] = 29;
    int t = x. month;
    while (t > 1)
    {
        ret += days[t - 1];
        t--;
    }
    ret += x. day;
    return ret;
}

int daysB(Date x)
{
    int days[13], ret = 0;
    memcpy(days, D, sizeof(days));
    if (special(x. year))
        days[2] = 29;
    int t = x. month;
    while (t < 12)
    {
        ret += days[t + 1];
        t++;
    }
    ret += days[x. month] - x. day;
    return ret;
}

void solve_A()
{
    int days = 0;
    int p = daysB(a);
    if (a. year + 1 < b. year) 
    {   a. year++;
        while (a. year + 1 < b. year)
        {
            if (special(a.year)) days += 366; else days += 365;        
            a. year++;
        }
    }
    days += p;
    days++;
    printf("%s\n", ANS[6 - days % 7]);
}

void solve_B()
{
    int days = 0;
    int p = daysA(a);
    while (b. year < a. year)
    {
        if (special(b.year)) days += 366; else days += 365;
        b.year++;
    }    
    days += p;
    days--;
    printf("%s\n", ANS[days % 7]);
}

int main()
{
    scanf("%d %d %d", &a. year, &a. month, &a. day);
    if (a < b) solve_A();
    else solve_B();
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -