hdu 1517 (博弈)

点击打开链接


分析:

两个人进行乘法,从1开始,每次成 2 ~ 9中任意一个数。谁先乘到>=n就胜利。。

可知 2 ~ 9 (18^0*9)时 , 先手胜。

10 ~ 18(18^0*18)时,后手胜,因为第一个人先乘最小的2,得到18.


19 ~ 162(18^1*9)时,先手胜,因为 n = 19 自己先乘2,然后对手乘最大9,才得到18。

n = 162,自己先成9,对手最小乘2,则自己可以得到最大的162;

163 ~ 324(18^1*18)时,后手胜 

.....

由此可以得到规律:先让n 不断的  / 18 , 知道 n<=18 时 , 判断与 9 的大小。。。


注意用double、、


include"stdio.h"
int main()
{
    double n;
    while(scanf("%lf",&n)!=-1)
    {
        while(n>18)n/=18;
        if(n<=9)printf("Stan wins.\n");
        else printf("Ollie wins.\n");
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值