南邮 OJ 1105 Game

Game

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 117            测试通过 : 27 

比赛描述

Carl and Ellie are in the midst of another adventure; this time, it is a road trip through Canada! They’ve just arrived in Saskatchewan [insert rectangular shape here], right in the middle of the Canadian prairies,and, to their horror, have discovered that all the rumours about it being dreadfully flat are true. Suddenly,the warnings their Canadian friends gave them prior to the trip spring back to mind, such as:
It’s so flat, a boy can watch his dog run away!
Or:
It’s so flat, it’s impossible to jump to your death!
As the driver, Carl is worried about falling asleep at the wheel and has decided to come up with a game to relieve the boredom. As a conscientious driver, he doesn’t want the game to be too distracting—the roads here are unerringly straight, so it’s easy to lose track of motion—so the rules are simple:
• Carl picks a number, N, between 1 and 1, 000, 000, 000.
• Carl and Ellie take turns subtracting an integer (between 1 and 20) from N. Carl plays first, and the winner is the one who subtracts off a number to get 0.
For example, suppose Carl picks the number 50. He subtracts off the number 5, leaving 45. Ellie subtracts off 17, leaving 28. Carl subtracts off 8, leaving 20. Finally, Ellie subtracts off 20, leaving 0, and wins!
Frankly, Ellie would rather sleep than play this game, so she has reprogrammed the GPS (which isn’t necessary in this region, anyway) to play for her instead. Her method of choosing a number is straightforward:
• If on a given turn, the number remaining is 20 or less, then she picks that number and wins.
• Otherwise, her choice of number is completely determined by the number Carl just picked, as follows. Before the game starts, Ellie chooses 20 random numbers, 1 ≤ a1, a2, a3, . . . ,a20 ≤ 20. Then whenever Carl subtracts off the number k, Ellie responds by subtracting off the number ak (unless she can win).
Carl needs your help! To help stay motivated playing this game, he would like to know if there exists a winning strategy for him, given the numbers N and a1, a2, a3, . . . ,a20.


输入

Each input case begins with the number N on a line by itself; the next line contains the numbers a1, a2, . . . ,a20, separated by spaces. Input terminates with a line containing 0.

输出

For each test case, print “Carl can win” or “Carl can't win”.

样例输入

42
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
0

样例输出

Carl can't win

提示

In this sample, since Carl chooses N to be 42, it turns out that he has no winning strategy. (Indeed, whichever number he initially subtracts off, Ellie will subtract off a number leaving 21 for Carl. Then whatever number Carl subtracts off next, Ellie will be left with a number between 1 and 20, and she wins!)

题目来源

Cai Wenju && Li Jialong





#include<iostream>
using namespace std;

int main(){
	long N;
	int a[21],i;
	while(cin>>N && N){
		for(i=1;i<=20;++i){
			cin>>a[i];
		}
		if(N==21){
			cout<<"Carl can't win"<<endl;
			continue;
		}
		if(N<=20 || N%21){
			cout<<"Carl can win"<<endl;
			continue;
		}
		for(i=1;i<=20;++i){		//42,63,84……
			if(i+a[i]!=21){
				break;
			}
		}
		if(i<=20){
			cout<<"Carl can win"<<endl;
		}else{
			cout<<"Carl can't win"<<endl;
		}
	}
}






你可能感兴趣的:(ACM,game,南邮OJ)