POJ2505 A multiplication game(博弈)

题意

开始时$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;
}

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

时间: 2024-11-06 01:40:04

POJ2505 A multiplication game(博弈)的相关文章

UVA 847 - A Multiplication Game(博弈)

UVA 847 - A Multiplication Game 题目链接 题意:一个数一开始是1,每次轮流乘2-9,谁先大于n谁就赢,问谁胜 思路:博弈,找出必胜态,2-9为stan,10-18为ollie,19-162为stan...发现都是乘2乘9交替 代码: #include <stdio.h> #include <string.h> #include <math.h> long long n; bool judge(long long n) { long lon

HDU 1517 A Multiplication Game (博弈&amp;&amp;找规律)

A Multiplication Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3691    Accepted Submission(s): 2097 Problem Description Stan and Ollie play the game of multiplication by multiplying an in

HDU 1517 A Multiplication Game 博弈

A Multiplication Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6202    Accepted Submission(s): 3532 Problem Description Stan and Ollie play the game of multiplication by multiplying an in

POJ2505 A multiplication game[博弈论]

A multiplication game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6028   Accepted: 3013 Description Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers 2 to 9. Stan always starts with p =

poj 2505 A multiplication game(博弈)

还的确是一个稍有难度博弈的问题(这个可不属于博弈中的任何一个): 题意:游戏规则为:两个人在2-9选数选出之后与p相乘,此时p=p*(2...9);当p>=n时这一方获胜.. 分析: 如果输入是 2 ~ 9 ,(2~9)因为Stan 是先手,所以Stan 必胜 如果输入是 10~18 ,(9+1~9*2)因为Ollie 是后手,不管第一次Stan 乘的是什么,Stan肯定在 2 ~ 9 之间,如果Stan乘以 2 ,那么Ollie就乘以 9 ,就到18了,如果Stan乘以 9 ,那么Ollie乘

POJ_2505 A multiplication game(博弈,range)

题目请点我 题解: 这道题是遇到的第一道相乘的题目,考虑的是谁能先大于等于N.对于这类题目,我觉得不太容易像Nim游戏一样找到一个平衡状态.从必胜态和必败态去考虑,我们转化为一个找每个人必能达到的范围的问题.首先,对于先手来说,2-9为必胜区间,不管先手如何,后手所能达到的最小值是18,所以后手的必胜区间是10-18.之后依次类推,每次在考虑临界值的时候,每个人都是希望自己能更大,而对手是希望更小,两个人分开去考虑,所以按照自己每次乘9,对手乘2来考虑临界区间. 所以有以下结果,符合结论: 1-

POJ2505 A multiplication game 博弈论 找规律

http://poj.org/problem?id=2505 感觉博弈论只有找规律的印象已经在我心中埋下了种子... 题目大意:两个人轮流玩游戏,Stan先手,数字 p从1开始,Stan乘以一个2-9的数,然后Ollie再乘以一个2-9的数,直到谁先将p乘到p>=n时那个人就赢了,而且轮到某人时,某人必须乘以2-9的一个数. 题目大意来源http://blog.csdn.net/jc514984625/article/details/71157698 因为谷歌翻译太难懂了,所以总是找题解找题目大

poj分类解题报告索引

图论 图论解题报告索引 DFS poj1321 - 棋盘问题 poj1416 - Shredding Company poj2676 - Sudoku poj2488 - A Knight's Journey poj1724 - ROADS(邻接表+DFS) BFS poj3278 - Catch That Cow(空间BFS) poj2251 - Dungeon Master(空间BFS) poj3414 - Pots poj1915 - Knight Moves poj3126 - Prim

博弈论类题目小结——转载

出处http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 首先当然要献上一些非常好的学习资料: 基础博弈的小结:http://blog.csdn.net/acm_cxlove/article/details/7854530 经典翻硬币游戏小结:http://blog.csdn.net/acm_cxlove/article/details/7854534 经典的删边游戏小结:http://blog.csdn.net/acm