首页 > 其他 > 详细

hdu 1517 Multiplication Game

时间:2019-08-17 19:02:52      阅读:90      评论:0      收藏:0      [点我收藏+]

题意:

用整数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.\n");
16         else
17             printf("Ollie wins.\n");
18     }
19     return 0;
20 }
View Code

 

hdu 1517 Multiplication Game

原文:https://www.cnblogs.com/kongbursi-2292702937/p/11369640.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!