Good Luck in CET-4 Everybody!
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4620 Accepted Submission(s): 2960
“升級”?“雙扣”?“紅五”?還是“鬥地主”?
當然都不是!那多俗啊~
作爲計算機學院的學生,Kiki和Cici打牌的時候可沒忘記專業,她們打牌的規則是這樣的:
1、 總共n張牌;
2、 雙方輪流抓牌;
3、 每人每次抓牌的個數只能是2的冪次(即:1,2,4,8,16…)
4、 抓完牌,勝負結果也出來了:最後抓完牌的人爲勝者;
假設Kiki和Cici都是足夠聰明(其實不用假設,哪有不聰明的學生~),並且每次都是Kiki先抓牌,請問誰能贏呢?
當然,打牌無論誰贏都問題不大,重要的是馬上到來的CET-4能有好的狀態。
Good luck in CET-4 everybody!
/*********************************************
*
* acm: hdu-1847
*
* title: Good Luck in CET-4 Everybody!
*
* time: 2014.5.9
*
*********************************************/
//考察博弈論 sg函數
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAXSIZE 1001
int SG[MAXSIZE];
int mex(int n)
{
int i;
int t;
int g[MAXSIZE] = {0};
for (i = 0; ; i++)
{
t = n - (int )pow(2, i);
if (t < 0)
{
break;
}
if (SG[t] == -1)
{
SG[t] = mex(t);
}
g[SG[t]] = 1;
}
for (i=0; ; i++)
{
if (!g[i])
{
return i;
}
}
}
int main()
{
int n;
memset(SG, -1, sizeof(SG));
while (~scanf("%d", &n))
{
if (SG[n] == -1)
{
SG[n] = mex(n);
}
if (SG[n] != 0)
{
printf("Kiki\n");
}
else
{
printf("Cici\n");
}
}
return 0;
}
/*********************************************
*
* acm: hdu-1847
*
* title: Good Luck in CET-4 Everybody!
*
* time: 2014.5.9
*
*********************************************/
//考察博弈論 找規律 n%3 == 0 爲失敗者
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
while (~scanf("%d", &n))
{
if (n%3 != 0)
{
printf("Kiki\n");
}
else
{
printf("Cici\n");
}
}
return 0;
}