ACM - 게임 의 법칙 찾기

3246 단어 ACM - 주제 - 수학
일부 게임 이론 문 제 는 간단 한 분석 과 관찰 만 있 으 면 결론 을 얻 을 수 있 습 니 다. 말 이 많 지 않 습 니 다. 먼저 기초 문 제 를 풀 겠 습 니 다. 물론 가장 간단 한 문제 입 니 다. HDOJ: 1846, 시공 간 이동 (클릭 하여 링크 열기) 문 제 는 다음 과 같 습 니 다.
Brave Game
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6770    Accepted Submission(s): 4548
Problem Description
10 년 전에 대학 에 다 닐 때 중국 은 해마다 외국 에서 영화 블록 버스터 영 화 를 도입 했다. 그 중에서 한 편의 영 화 는 (영어 이름: Zathura) 라 고 불 렸 는데 지금까지 저 는 영화 중의 일부 컴퓨터 특기 에 깊 은 인상 을 남 겼 습 니 다.
오늘 모두 가 비행기 시험 을 선택 하 는 것 은 용감 한 선택 이다.이번 짧 은 학기 에 우리 가 말 하 는 것 은 게임 (game) 주제 이다.그래서 여러분 이 지금 하고 있 는 것 도 '용감 한 자의 게임' 입 니 다. 이것 도 제 가 이 문 제 를 명명 한 이유 입 니 다.
물론 '용감 함' 을 제외 하고 저 는 '성실 함' 도 보고 싶 습 니 다. 시험 성적 이 어떻든 진실 한 결 과 를 보고 싶 습 니 다. 저도 여러분 이 꼭 할 수 있 을 거 라 고 믿 습 니 다.
용감 한 분 들 이 하 실 첫 번 째 게임 은 뭘 까요?아주 간단 합 니 다. 그것 은 이렇게 정의 합 니 다.
1、  이 게임 은 2 인 게임 입 니 다.
2、  돌 더미 가 모두 n 개 있다.
3、  두 사람 이 돌아 가면 서 진행한다.
4、  한 걸음 한 걸음 걸 을 때마다 1.. m 개의 돌 을 가 져 갈 수 있다.
5、  가장 먼저 광석 을 채취 한 쪽 이 승리 하기;
만약 게임 의 쌍방 이 가장 좋 은 전략 을 사용한다 면, 누가 이 길 수 있 는 지 출력 해 주 십시오.
 
Input
입력 데 이 터 는 먼저 정수 C (C < = 100) 를 포함 하고 C 조 테스트 데이터 가 있 음 을 나타 낸다.
각 조 의 테스트 데 이 터 는 한 줄 을 차지 하고 두 개의 정수 n 과 m (1 < = n, m < = 1000) 를 포함 하 며 n 과 m 의 의 미 는 제목 설명 을 참조 합 니 다.
 
Output
먼저 가 는 사람 이 이 길 수 있다 면 "first"를 출력 하 십시오. 그렇지 않 으 면 "second"를 출력 하 십시오. 모든 인 스 턴 스 의 출력 이 한 줄 을 차지 합 니 다.
 
Sample Input
 
   
2 23 2 4 3
 

Sample Output
 
   
first second
 
题意:
中文的,不说了。
分析:
题目中说了,每个人最多能拿走的石头不会超过m个,那么意味着每轮第一个人拿完石头后,剩余的石头不会少于当前的n减去m个,那么这个时候如果第二个人能一下拿完石头,那么第二个人就赢了,这种情况最终会发生的条件就是当n为m+1的整数倍时,因为在这种情况下,第二个人总能拿到相对于第一个人的第m+1个石头。
其实,反着想要清楚得多,两人轮流往空的地方扔石头,每轮每人扔不超过m个石头,谁先使得地上有n个石头谁就赢,很明显,第一轮的第一个人不可能让地上有m+1个石头,而第二个人则可以,所以后面的每一轮第二个人都能使地上的石头变成m+1的倍数,自然当n为m+1的整数倍时第二个人就赢了。
源代码:

#include 

int main()
{
    int cas;
    scanf("%d", &cas);
    while(cas--)
    {
        int n, m;
        scanf("%d%d", &n, &m);
        if(n%(m+1) == 0)         //  如果n是m+1的倍数则第二个人赢
            puts("second");
        else puts("first");
    }
    return 0;
}

이 를 통 해 알 수 있 듯 이 이런 문 제 는 간단하게 분석 하고 규칙 을 찾 으 면 누가 지고 누가 이 기 는 지 알 수 있다. 다른 비슷 한 문 제 는 HDU: 2188, 2147 이 있 으 니 모두 가 손 을 연습 할 수 있다.
다음은 조금 귀 찮 은 문 제 를 살 펴 보고 전송 문 (링크 열 기 를 클릭) 을 보 자.

좋은 웹페이지 즐겨찾기