码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1517 A Multiplication Game(博弈论)

时间:2014-09-16 14:17:00      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:acm   c语言   博弈论   算法   编程   

题目地址:HDU 1517

NP状态转换。

可以把题目的向上乘变成向下除。这样1是终结状态,设1的时候为必败点。

根据所有能一步到达必败点的点是必胜点,所以[x,x*9]必胜点;根据只能到达必胜点的点是必败点,所以[x*9+1,x*9*2]是必败点.

然后求解。

代码如下:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm>

using namespace std;
#define LL __int64
int main()
{
    LL n, x;
    int f;
    while(scanf("%I64d",&n)!=EOF)
    {
        x=1;
        f=0;
        while(x<n)
        {
            if(!f)
                x*=9;
            else
                x*=2;
            f=1-f;
        }
        if(!f)
            puts("Ollie wins.");
        else
            puts("Stan wins.");
    }
    return 0;
}


HDU 1517 A Multiplication Game(博弈论)

标签:acm   c语言   博弈论   算法   编程   

原文地址:http://blog.csdn.net/scf0920/article/details/39316155

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!