美文网首页
伊甸园日历游戏

伊甸园日历游戏

作者: 续袁 | 来源:发表于2018-11-04 20:17 被阅读19次

Problem B. 伊甸园日历游戏
时间限制 1000 ms
内存限制 128 MB
题目描述
Adam和Eve玩一个游戏,他们先从1900.1.1到2001.11.4这个日期之间随意抽取一个日期出来。然后他们轮流对这个日期进行操作:

1 : 把日期的天数加1,例如1900.1.1变到1900.1.2

2 : 把月份加1,例如:1900.1.1变到1900.2.1

其中如果天数超过应有天数则日期变更到下个月的第1天。月份超过12则变到下一年的1月。而且进行操作二的时候,如果有这样的日期:1900.1.31,则变成了1900.2.31,这样的操作是非法的,我们不允许这样做。而且所有的操作均要考虑历法和闰年的规定。

谁先将日期变到2001.11.4谁就赢了。

每次游戏都是Adam先操作,问他有没有必胜策略?

输入数据
一个测试点。多组数据。
第一行为数据组数。
接下来一行 X Y Z 表示 X 年 Y 月 Z 日
输出数据
输出“YES”or“NO”表示亚当是否有必胜策略。
样例输入
3
2001 11 3
2001 11 2
2001 10 3
样例输出
YES
NO
NO
样例说明
建议先把所有情况都算出来_

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int day[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int t, y, m, d, f[2010][15][35];
bool leapYear(int x) {
    if ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0)
        return true;
     return false; 

}
void work() {
    int a = 2001, b = 11, c = 4;
    f[2001][11][4] = 0;
    while (!(a == 1900 && b == 1 && c == 1)) {
        if (!f[a][b][c]) {
            if (b == 1 && c == 1)f[a - 1][12][31] = 1;
            else if (c == 1) {
                if (leapYear(a) && b == 3)f[a][b - 1][day[b - 1] + 1] = 1;
                else f[a][b - 1][day[b - 1]] = 1;
            }
            else f[a][b][c - 1] = 1;
            if (b == 1)f[a - 1][12][c] = 1;
            else if (leapYear(a) && b == 3 && c <= day[b - 1] + 1)f[a][b - 1][c] = 1;
            else if (c <= day[b - 1])f[a][b - 1][c] = 1;
        }
        if (b == 1 && c == 1) { a--; b = 12; c = 31; }
        else if (c == 1) {
            if (leapYear(a) && b == 3 && c == 1) { b = 2; c = 29; }
            else { b--; c = day[b]; }
        }
        else c--;
    }
}
int main() {
    work();
    cin >> t;
    for (int i = 0; i < t; i++) {
        cin >> y >> m >> d;
        if (f[y][m][d])cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}


相关文章

  • 伊甸园日历游戏

    Problem B. 伊甸园日历游戏时间限制 1000 ms内存限制 128 MB题目描述Adam和Eve玩一个游...

  • 读《圣经》看“时间催人老”,“信耶稣得永生”有真意!

    (1)一年有四季、一天有黑白,若没日历,人自伊甸园犯罪堕落后会有“茫茫无期”的感觉,无形中增加了“恐慌”。“日历”...

  • 伊甸园的秘密

    神创设伊甸园,让亚当和夏娃在其中生活。 撒旦是天使长,认为伊甸园只是让神觉得满意,世界和人不过是神的游戏和仆役。他...

  • 独立动作游戏伊甸园计划 风格与质量效应相似

    《Everreach:伊甸园计划》是一个第三人称动作rpg游戏,背景设定在遥远的伊甸园世界,人类第一个星际殖民地的...

  • [老游新评][SFC] 46亿年物语 ~寻找伊甸园~【70】

    46亿年物语 ~寻找伊甸园~ 平台:SFC 类型:动作冒险 这个游戏在国内的传播似乎主要是归功于一篇在《游戏·人》...

  • 好的游戏是情感的伊甸园

    “我的朋友都说我很聪明,我自己也承认自己很聪明,我也很有能力,别人不能干的事情,我都可以做的很好,可是我就是很懒。...

  • 伊甸园

    伊甸园 为你画一片伊甸 为你寻一处芬芳 蝴蝶落在屋檐的角上 微微地翕动着彩色的翅膀 阳光闪闪发亮 花儿静静地兀自开...

  • 伊甸园

    亚当的第一次回眸, 将相遇定格在初秋。 青涩的脸庞, 和木芙蓉一同绽放。 阳光在指尖汨汨淌下, 滴出唐宋的笔笔墨迹...

  • 伊甸园

    你知道吗 我从你的眼睛里 看到了什么 疲倦 焦虑 不安 幻灭 有什么能对抗虚无呢 大自然的美丽 本来就是麻痹 一切...

  • 伊甸园

    题记:去往你的精神家园 之前我在罗大伦的公众号里喜欢了一篇文章,讲的是帮助我们的孩子,建立自己内在的一个小世界,只...

网友评论

      本文标题:伊甸园日历游戏

      本文链接:https://www.haomeiwen.com/subject/dlluzftx.html