牛客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;
}