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

POJ2505 A multiplication game(博弈)

时间:2018-08-03 18:46:10      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:turn   ica   fine   include   nbsp   第一个   amp   pac   cst   

题意

开始时$p = 1$,每次可以乘$2 - 9$,第一个使得$p \geqslant n$的人赢

问先手是否必胜

$1 <n <4294967295$

Sol

认真的推理一波。

若当前的数为$\frac{n}{9} \leqslant x \leqslant n$,则先手必胜

若当前的数为$\frac{n}{18} \leqslant x \leqslant \frac{n}{9}$,则先手必败

若当前的数为$\frac{n}{18 * 9} \leqslant x \leqslant \frac{n}{18}$,则先手必胜

$\dots \dots \dots \dots \dots \dots \dots \dots \dots\dots\dots \dots $

然后就显然了,每次除$18$,最后判一下就行了。

然而不知道为啥用double才能过qwq。。。

#include<cstdio>
#define LL long long 
using namespace std;
int main() {
    double n;
    while(scanf("%lf", &n) != EOF) {
        while(n > 18) n = n / 18;
        if(n <= 9) puts("Stan wins.");
        else puts("Ollie wins.");        
    }
    return 0;
}

 

POJ2505 A multiplication game(博弈)

标签:turn   ica   fine   include   nbsp   第一个   amp   pac   cst   

原文地址:https://www.cnblogs.com/zwfymqz/p/9415666.html

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