1 条题解

  • 0
    @ 2025-4-9 21:34:53

    解题思路

    因为每次操作是乘以2到9之间的数,我们可以发现,如果n在(9,18](9, 18]这个区间内,Stan 先操作,他乘以2到9之间的数后,结果必然会大于9,而 Ollie 再操作时,就会使得结果大于等于n,所以 Ollie 获胜。

    如果n在(18,9×9](18, 9\times9](18,81](18, 81]这个区间内,Stan 先操作,他可以选择合适的数(乘以2到9之间的数),使得结果在(18,81](18, 81]内,然后 Ollie 操作后,Stan 就可以让结果大于等于n,所以 Stan 获胜。

    以此类推,我们可以发现规律:当n在(9×2k,9×2k×9](9\times2^{k}, 9\times2^{k}\times9](k为非负整数)区间内时,若k为偶数,Stan 获胜;若k为奇数,Ollie 获胜。

    代码

    #include <cstdio>
     
    int main() 
    { 
    	double n;
    	while(~scanf("%lf",&n))
    	{
    		while(1)
    		{
    			if(n<=9){
    				printf("Stan wins.\n");
    				break;
    			}else if(n<=18){
    				printf("Ollie wins.\n");
    				break;
    			}
    			n = n/18;
    		}
    	}
       return 0; 
    } 
    
    • 1

    信息

    ID
    1506
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    3
    已通过
    1
    上传者