• poj2505-A multplication game


    题意:两个人轮流用2~9来乘n,使n不断扩大,n开始为1。当给一个固定值k,谁先使n超过k谁赢。

    分析:能到达必败态的状态为必胜态,只能到达必胜态的状态为必败态。对于给定的k,n>=k时为必败态,所有能到达这些必败态的n为必胜态,这些必胜态中最小的是ceil(k/9.0)。凡是大于它的都可以直接到达必败态。然而有些状态只能到达必胜态,就是那些乘二都要进入必胜态的数字,这些数中最小的是ceil(ceil(k/9.0)/2.0)。这样我们又得到了一批必败态,我们只要按照这种方法不断地由必败推必胜,由必胜推必败,即可知道1是必败还是必胜。也就知道了stan是赢还是输了。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<string>
    #include<algorithm>
    int n;
    int main(){
        while (~scanf("%I64d",&n)){
            while (1){
                n=ceil(n/9.0);
                if (n==1) {printf("Stan wins.
    ");break;}
                n=ceil(n/2.0);
                if (n==1) {printf("Ollie wins.
    ");break;}
            }
        }
    }
  • 相关阅读:
    Java Script 读书笔记 (二) 错误处理机制 -- 没看懂,待review
    Visual Studio Code Tips
    SQLServer数据库分页查询
    Sql server inner join......on
    Sql server if-else以及switch
    git介绍
    Fiddler
    cocos2d对动画的各种操作
    SQLI
    Windows系统命令备份
  • 原文地址:https://www.cnblogs.com/qzqzgfy/p/5266798.html
Copyright © 2020-2023  润新知