problem description
大學英語四級考試就要來臨了,你是不是在緊張的複習?也許緊張得連短學期的acm都沒工夫練習了,反正我知道的kiki和cici都是如此。當然,作為在考場浸潤了十幾載的當代大學生,kiki和cici更懂得考前的放鬆,所謂「張弛有道」就是這個意思。這不,kiki和cici在每天晚上休息之前都要玩一會兒撲克牌以放鬆神經。
「公升級」?「雙扣」?「紅五」?還是「鬥地主」?
當然都不是!那多俗啊~
作為計算機學院的學生,kiki和cici打牌的時候可沒忘記專業,她們打牌的規則是這樣的:
1、 總共n張牌;
2、 雙方輪流抓牌;
3、 每人每次抓牌的個數只能是2的冪次(即:1,2,4,8,16…)
4、 抓完牌,勝負結果也出來了:最後抓完牌的人為勝者;
假設kiki和cici都是足夠聰明(其實不用假設,哪有不聰明的學生~),並且每次都是kiki先抓牌,請問誰能贏呢?
當然,打牌無論誰贏都問題不大,重要的是馬上到來的cet-4能有好的狀態。
good luck in cet-4 everybody!
input
輸入資料報含多個測試用例,每個測試用例佔一行,包含乙個整數n(1<=n<=1000)。
output
如果kiki能贏的話,請輸出「kiki」,否則請輸出「cici」,每個例項的輸出佔一行。
sample input 1 3
sample output
kiki
cici
思路1:如果n是3的倍數時,先手必敗,否則先手必勝,因為此時你可以將n全部拿完或者將n的個數轉移成3的倍數。(你可以拿1個或者2個)
**如下
#include
#include
#include
#include
#include
using
namespace
std;
int main()
思路2:sg函式
**如下
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int n = 1010;
int sg[n], vis[n];
int s[n];//每次可以走的步數
void get_sg()
}}int main()
return
0;}
hdoj1847(巴什博弈)
problem description 大學英語四級考試就要來臨了,你是不是在緊張的複習?也許緊張得連短學期的acm都沒工夫練習了,反正我知道的kiki和cici都是如此。當然,作為在考場浸潤了十幾載的當代大學生,kiki和cici更懂得考前的放鬆,所謂 張弛有道 就是這個意思。這不,kiki和ci...
博弈 巴什博弈
只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1 r s,r為任意自然數,s m 那麼先取...
HDU 2188 巴什博弈
題解 剛開始沒思路,後來知道是巴士博弈,茅塞頓開。參考部落格 這道題是先到n誰就贏,林隊先投,問林隊能贏不,所以應該站在先手的角度看怎麼去贏。比如n m 1,不管先手怎麼投,後手肯定贏,所以先手要想贏,必須給後手造成他去投時n m 1,所以當n m 1 r s,先手取s,如果後手取k,先手再取m 1...