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

来源:互联网 发布:车牌识别软件 编辑:程序博客网 时间:2024/04/30 06:38
// 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);elseones(ceil(number / 2.0), !win);}int main(int ac, char *av[]){int number;while (cin >> number)ones(number, true);return 0;}


原创粉丝点击