vijos-伊甸園日曆遊戲

不被看好的青春叫成長發表於2015-03-17

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”表示亞當是否有必勝策略。

樣例1

樣例輸入1[複製]

3
2001 11 3
2001 11 2
2001 10 3

樣例輸出1[複製]

YES
NO
NO

提示

建議先把所有情況都算出來^_^

 

程式碼如下:

#include <iostream>

using namespace std;

int main()
{
    int N;
    cin>>N;
    while (N--)
    {
        int y,m,d;
        cin>>y>>m>>d;
        if (m==9&&d==30)
            cout<<"YES"<<endl;
        else if (m==1&&d==30)
            cout<<"YES"<<endl;
        else if ((m+d)%2==0)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;

}


執行結果:

找規律的題目,一開始以為算奇數步和偶數步就可以了,結果是大大的WA,後來參考別人的才明白有特殊情況。

相關文章