zoukankan      html  css  js  c++  java
  • hdu 1517 Multiplication Game

    题意:

    用整数p乘以2到9中的一个数字。斯坦总是从p = 1开始,做乘法,然后奥利乘以这个数,然后斯坦,以此类推。游戏开始前,他们画一个整数1 < n < 4294967295,谁先到达p >= n,谁就是赢家。

    题解:

    看这一道题就会联想起来巴什博弈,但是巴什博弈是不停的从一堆石子里面往外边拿;这个是不停的累乘,我们可以采用巴士博弈类似的思想来做,

    我们可以找如果谁面对9*2的次方,那么谁就会输。

    因此,当n>18时,n不断地除以18,最后如果n<=9则先手必胜,否则后手必胜

    代码:

     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     double n;
    10     while(~scanf("%lf",&n))
    11     {
    12         while(n>18)
    13             n/=18;
    14         if(n<=9)
    15             printf("Stan wins.
    ");
    16         else
    17             printf("Ollie wins.
    ");
    18     }
    19     return 0;
    20 }
    View Code
  • 相关阅读:
    「JOI 2015 Final」城墙
    「JOI 2015 Final」舞会
    「JOISC 2014 Day1」 历史研究
    「JOISC 2015 Day 1」卡片占卜
    「NOI十联测」奥义商店
    「NOI十联测」黑暗
    「THUSCH 2017」大魔法师
    「ZJOI2014」星系调查
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/11369640.html
Copyright © 2011-2022 走看看