牛客CSP-S提高組賽前集訓營1-倉鼠的石子游戲

牛客CSP-S提高組賽前集訓營1-倉鼠的石子游戲

題目描述

倉鼠和兔子被禁止玩電腦,無聊的他們跑到一塊空地上,空地上有許多小石子。兔子撿了很多石子,然後將石子擺成n個圈,每個圈由a[i]個石子組成。然後兔子有兩根彩色筆,一支紅色一支藍色。兔子和倉鼠輪流選擇一個沒有上色的石子塗上顏色,兔子每次可以選擇一個還未染色的石子將其染成紅色,而倉鼠每次可以選擇一個還未染色的石子將其染成藍色,並且倉鼠和兔子約定,輪流染色的過程中不能出現相鄰石子同色,誰不能操作他就輸了。假設他們兩個都使用了最優策略來玩這個遊戲,並且兔子先手,最終誰會贏得遊戲?

輸入描述:

第一行輸入一個正整數T,表示有T組測試案例。
每組測試案例的第一行輸入一個n,表示有n圈石子。 第二行輸入n個正整數a[i],表示每個圈的石子數量。

輸出描述:

對於每組測試案例,如果兔子贏了,輸出”rabbit“(不含引號)如果倉鼠贏了,輸出"hamster"(不含引號)。

思路分析:

如果一個圈的石子數等於1,則只能被塗一種顏色。但如果一個圈的石子數大於1時,兔子和倉鼠不論怎樣塗色,他們塗的次數總是相同(手模即可),也就是說這是不影響答案的。我們只用考慮石子數爲1的圈即可。

代碼:

#include<bits/stdc++.h>
using namespace std;
int T,n,a[2000];
int main() {
    scanf("%d",&T);
    while(T--) {
        scanf("%d",&n);
        int ans=0;
        for(int i=1;i<=n;i++) {
            scanf("%d",&a[i]);
            if(a[i]==1)
                ans++;
        }
        if(ans%2==0)
            printf("hamster\n");
        else
            printf("rabbit\n");
    }
    return 0;
}
發佈了45 篇原創文章 · 獲贊 60 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章