Posted on 2010-08-09 21:27
MiYu 閱讀(689)
評論(0) 編輯 收藏 引用 所屬分類:
ACM ( 組合 ) 、
ACM ( 博弈 )
MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋
題目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=1847
題目描述:
Problem Description
大學(xué)英語四級考試就要來臨了,你是不是在緊張的復(fù)習?也許緊張得連短學(xué)期的ACM都沒工夫練習了,反正我知道的Kiki和Cici都是如此。當然,作為在考場浸潤了十幾載的當代大學(xué)生,Kiki和Cici更懂得考前的放松,所謂“張弛有道”就是這個意思。這不,Kiki和Cici在每天晚上休息之前都要玩一會兒撲克牌以放松神經(jīng)。
“升級”?“雙扣”?“紅五”?還是“斗地主”?
當然都不是!那多俗啊~
作為計算機學(xué)院的學(xué)生,Kiki和Cici打牌的時候可沒忘記專業(yè),她們打牌的規(guī)則是這樣的:
1、 總共n張牌;
2、 雙方輪流抓牌;
3、 每人每次抓牌的個數(shù)只能是2的冪次(即:1,2,4,8,16…)
4、 抓完牌,勝負結(jié)果也出來了:最后抓完牌的人為勝者;
假設(shè)Kiki和Cici都是足夠聰明(其實不用假設(shè),哪有不聰明的學(xué)生~),并且每次都是Kiki先抓牌,請問誰能贏呢?
當然,打牌無論誰贏都問題不大,重要的是馬上到來的CET-4能有好的狀態(tài)。
Good luck in CET-4 everybody!
Input
輸入數(shù)據(jù)包含多個測試用例,每個測試用例占一行,包含一個整數(shù)n(1<=n<=1000)。
Output
如果Kiki能贏的話,請輸出“Kiki”,否則請輸出“Cici”,每個實例的輸出占一行。
Sample Input
1
3
Sample Output
Kiki
Cici
題目分析:
MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋
首先我們可以想到在面對3的時候是必敗局,誰面對3時無論拿多少都會敗 ! <---這是關(guān)鍵
那么就要盡量造成這樣的局勢給對方,因為任何不是3的倍數(shù)的數(shù)加1或2都可以變成3的倍數(shù),
同理減去1或2也可以變成3的倍數(shù),也就是說假設(shè)目前的個數(shù)不是3的倍數(shù),那我肯定能把它
拿成3的倍數(shù),比如現(xiàn)在是11個,那我拿走2個就變成9,這樣就造成對方為3的倍數(shù)局勢,那
么對方拿m個我都可以通過拿1或者2使總共一輪拿的數(shù)目成為3的倍數(shù),這樣就會有兩種情況:
1.剛好拿完.
2.剩下的還有3的倍數(shù)個,那繼續(xù);
所以這樣拿下去必勝
代碼如下:
MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋
#include <iostream>
using namespace std;
int main ()
{
int N;
while ( cin >> N )
{
puts ( N % 3 != 0 ? "Kiki" : "Cici" );
}
return 0;
}