小明和小頭遇到了矛盾,他們決定用男人的方式解決戰鬥——石頭剪刀布。但是小菜覺得石頭剪刀布已經過時了,於是他發明了另乙個更男人的遊戲。小菜給出乙個自然數n,小明和小頭輪流操作,每次操作可以把n減去n所擁有的數字中的最大值或者最小值(不包括0),不能操作者輸(即當n=0時)。
小菜怕他們不懂,於是給了乙個例子n=1024,則最大值=4,最小值=1。假如小明先操作,那麼他可以留給小頭1023或者1020。
小明和小頭覺得這個遊戲很好玩,於是打算多玩幾局。每次由小明先操作,如果兩人都是用最佳策略,請問誰會贏?
input
第一行只有乙個整數t,表示玩t輪遊戲
接下來t行,每行乙個自然數n,表示初始時小菜給出的自然數。
output
共t行,如果小明贏了第i輪遊戲則在第i行輸出「yes」 否則輸出「no」
sample input
2 9
10sample output
yes
nodata constraint
【資料規模】
40%的資料n≤50
100%的資料t≤100,n≤1000000
顯然我們發現這個輸贏是奇偶分配的,所以可以轉移動態
fi=!fj
那麼j是什麼呢?
就是i-i中最大值和i-i中最小值,那麼設這兩為j,k得
fi=!fj∨!fk
那麼我們預處理1~10^6的所有值即可
#include
#include
#define rep(i,a,b) for (i=a;i<=b;i++)
using
namespace
std;
int t,n,i,j;
bool f[1000001];
int main()
x/=10;
}f[i]=!f[i-mxn]||!f[i-mnn];
}rep(i,1,t)
}
石頭剪刀布(概率DP)
上來題意就理解錯了,題意並不是你可以通過前面的對手來判斷接下來的對手,而是讓你通過前面對手的操作來決策。定義 g i j k 表示對手出了 i 個石頭,j 個剪刀,k 個布的概率。f i j k q 表示對手出了 i 個石頭,j 個剪刀,k 個布,下乙個將出 q 的概率。注 下面及 中用 1 表示石...
剪刀石頭布
開始學習時寫的剪刀石頭布 雖然是用c 寫的 我感覺思想還是面向過程 慚愧慚愧 include include include include includeusing namespace std enum caiquan class inte cet inte cet inte cet system...
石頭剪刀布
題目描述 石頭剪刀布是常見的猜拳遊戲 石頭勝剪刀,剪刀勝布,布勝石頭。如果兩個人出拳一樣,則不分勝負。在 生活大 第二季第 8 集中出現了一種石頭剪刀布的公升級版遊戲。公升級版遊戲在傳統的石頭剪刀布遊戲的基礎上,增加了兩個新手勢 斯波克 星際迷航 主角之一。蜥蜴人 星際迷航 中的反面角色。這五種手勢...