Land oj 1604 - Play Apple (博弈)

Problem 1604 - Play Apple
Time Limit: 1000MS     Memory Limit: 65536KB    
Total Submit: 432    Accepted: 173    Special Judge: No
Description

There are N apples. Two people take turns to either: 
1. Divide the apple into two piles with different numbers.
2. The other people selects a pile of apples as the beginning of the next turn.
If someone can not meet the requirements, he is lost. Will the first one win the game if both use the best strategy?

Input
There are multiple test cases.
The first line of each case contains a integer N. ( 1 <= N <= 1000000000 )
Output
If the first person will win, output “Yes”. Otherwise, output “No”.
Sample Input
2
3
4
Sample Output

No
Yes
No

//题意:

给你一堆苹果的个数,两个人依次将苹果分为个数不同的两堆,如果不能再分,那么就会输了这场比赛,你是第一个分,问你是否会赢得比赛?

//思路:

通过模拟可以找出有一个必输点(n-1)%3==0,找到这个规律就可以写这道题了。

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<map>
#include<queue>
#include<stack>
#include<set>
#include<algorithm>
#include<iostream>
#define INF 0x3f3f3f3f
#define ull unsigned long long
#define ll long long
#define IN __int64
#define N 100010
#define M 1000000007
using namespace std;
int main()
{
	ll n;
	while(scanf("%lld",&n)!=EOF)
	{
		if(n == 1 || n == 2)
			puts("No");
		else if(n == 3)
			puts("Yes");
		else
		{
			if((n - 1) % 3 == 0)
				puts("No");
			else 
				puts("Yes");
		}
	}
	return 0;
}


 

你可能感兴趣的:(Land oj 1604 - Play Apple (博弈))