新生赛第一题:dls的黑粉
Description
眾所周知,鄧老師在西郵有眾多的應援團,其中鄧老師西郵應援團東區分團和鄧老師西郵應援團西區分團是主要的兩個應援團,但是這兩個應援團誰都看不上對面,都覺得自己才是鄧老師唯一的應援團,覺得對方是黑粉,有一天,這兩個應援團的粉絲們又在粉絲群吵起來了,鄧老師實在受不了了,他提出了一個方案:讓雙方都派出一個人互相做一個游戲,誰輸了,誰就是黑粉。
這個游戲的內容是這樣的:有?nn?個石子,每個人都只能從中取出一個石子,特別的是,如果石子的總數是偶數,那么當前取石子的人可以取兩個石子(當然,也可以只取一個石子),最后,如果有人取走了最后的石子,那么他就贏了。鄧老師非常的聰明,他的粉絲們雖然不如鄧老師,但是也可以在這場游戲中盡量選擇有利于自己的方法。對于鄧老師來說,它可以輕易的判斷誰才是黑粉,但是他現在要去學習嵌入式,所以你現在需要幫鄧老師判斷一下誰才是黑粉。
Input
第一行有一個正整數?T(1\leq T\leq 100000)T(1≤T≤100000)?,表示這個題一共有?TT?組數據;
接下來?TT?行每一行都有一個正整數?n(1\leq n\leq 10^{15})n(1≤n≤1015)?和一個字符E或者W,E表示這組游戲中東區的粉絲為先手,W表示這組游戲中西區的粉絲為先手,這個整數和字符用空格隔開。
?
?
Output
對于每一個測試用例,輸出包含一段字符串,如果這組游戲中東區的粉絲勝利了,那么你需要輸出一行”west is anti-fan”,否則輸出一行”east isanti-fan”,結果不帶雙引號。
?Sample Input 1?
9 8 W 2 E 5000 W 9494 E 114514 W 810975 E 1 W 1 E 1000000000000000 ESample Output 1
east is anti-fan west is anti-fan east is anti-fan west is anti-fan east is anti-fan east is anti-fan east is anti-fan west is anti-fan west is anti-fan?題目分析:共n個石子,若n為奇數,只能拿走一個,若n為偶數,可以拿走一個或兩個,最后拿走的勝。
n=1, 先手拿走一個,為必勝態,
n=2,先手可以拿走兩個,為必勝態,
n=3,先手只能拿走一個,對方拿走兩個,所以先手必敗,
n=4,先手拿走一個,對方只能拿走一個,先手再拿走兩個,所以先手必勝
綜上,n=1,先手必勝,n=2時,先手必勝,n>2 時,n為奇數時,只能轉移到 n-1 的狀態,先手必敗,n為偶數時,可以轉移到 n-1 和 n-2 的狀態,為了自己利益最大化,轉移到 n-1 狀態,所以先手勝。
注:
注意多組輸入,一個輸入對應一個輸出,而不是輸入所有數據,輸出所有對應結果。
AC代碼如下:
#include<stdio.h>long long int n[100000]; char a[100000];int main() {int T;scanf("%d", &T);int i=0;while(T--){scanf("%lld %c", &n[i], &a[i]);if (n[i] == 1){if (a[i] == 'W') printf("east is anti-fan\n");else if (a[i] == 'E') printf("west is anti-fan\n");}else{if (n[i] % 2 == 0){if (a[i] == 'W')printf("east is anti-fan\n");else if (a[i] == 'E') printf("west is anti-fan\n");}else{if (a[i] == 'W')printf("west is anti-fan\n");else if (a[i] == 'E') printf("east is anti-fan\n");}}}return 0; }?
總結
以上是生活随笔為你收集整理的新生赛第一题:dls的黑粉的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux#使用ll命令
- 下一篇: 简约动感PPT模板