hdu 1517 (博弈)

来源:互联网 发布:成绩统计软件 编辑:程序博客网 时间:2024/06/05 01:04

点击打开链接


分析:

两个人进行乘法,从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;}


原创粉丝点击