joj2608 石子
2608: 石子
Result | TIME Limit | MEMORY Limit | Run Times | AC Times | JUDGE |
---|---|---|---|---|---|
![]() |
1s | 65536K | 791 | 210 | Standard |
Xiao Tang和Xiao Jiang非常喜欢玩一种有趣的小游戏: 有N个石子,两人轮流从中取出1个, 3个或4个石子,当石子被取空时,游戏结束。 最后一个取石子的人获胜, 第一次总是Xiao Tang取. 当然,他们俩都足够聪明,总会采取最优的策略。
Input
每行会有一个正整数N(N<=100000), 代表石子的个数, N=0 代表输入结束
Output
输出获胜人的名字。
Sample Input
1 2 0
Sample Output
Xiao Tang Xiao Jiang
Problem Source: homeboy
This problem is used for contest: 140 187 198
Submit / Problem List / Status / Discuss
虽然只是个水水的递推,
但是做到这个题就一定要怀念一下下了。
这是上大学接触到的第一道真正意义的ACM题了(高中只做过生物以及物理竞赛水了个小奖的非OIer的男人伤不起...),还记得去年是某学长在某宣讲会上讲这题。当时觉得略神奇。
眨眼就大一下了...过得真快。
水平好像没什么大长进,要发奋图强了。
1 #include <stdio.h> 2 3 int main() 4 { 5 int a[100005]; 6 int i, n; 7 8 a[1] = 1; 9 a[2] = 0; 10 a[3] = 1; 11 a[4] = 1; 12 13 for (i=5; i<100005; ++i) 14 { 15 if (1==a[i-1] && 1==a[i-3] && 1==a[i-4]) 16 { 17 a[i] = 0; 18 } 19 else 20 { 21 a[i] = 1; 22 } 23 } 24 while (scanf("%d", &n)==1, n) 25 { 26 if (1 == a[n]) 27 { 28 printf("Xiao Tang\n"); 29 } 30 else 31 { 32 printf("Xiao Jiang\n"); 33 } 34 } 35 36 return 0; 37 }