UVa Problem 847 A Multiplication Game (乘法游戏)

// A Multiplication Game (乘法游戏)
// PC/UVa IDs: 110505/847, Popularity: A, Success rate: high Level: 3
// Verdict: Accepted
// Submission Date: 2011-05-29
// UVa Run Time: 0.012s
//
// 版权所有(C)2011,邱秋。metaphysis # yeah dot net
//
// 假设最终数为 162,为了防止对方得到大于等于 162的数,则上一步,一方应该让数尽量不大于 162 / 
// 9 = 18,如果大于等于 18,则对方可以乘以 9 即可大于等于 162,再往上一步,一方应该尽量选择将数
// 相乘后得到大于等于 9 的数,因为这样,另一方无论选择那个乘数,终将导致乘积大于等于 18,因为 9 /
// 9 = 1,即谁先乘,谁将获胜。
// 对于给定的数N,对于 Stan 来说,先达到数 N,则是胜利,回归到上一步,如果 Stan 先达到 N / 9,
// 则失败,继续上一步,若 Stan 先达到 N / 9 / 2,则胜利,使用递归解决即可。
	
#include <iostream>
#include <cmath>
	
using namespace std;
	
void ones(int number, bool win)
{
	if (number <= 9 && win)
	{
		cout << "Stan wins." << endl;
		return;
	}
	if (number <= 2 && !win)
	{
		cout << "Ollie wins." << endl;
		return;
	}
	
	if (win)
		ones(ceil(number / 9.0), !win);
	else
		ones(ceil(number / 2.0), !win);
}
	
int main(int ac, char *av[])
{
	int number;
	
	while (cin >> number)
		ones(number, true);
	
	return 0;
}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值