24h購物| | PChome| 登入
2011-06-16 18:02:05| 人氣1,638| 回應0 | 上一篇 | 下一篇

d347. 847 - A Multiplication Game

推薦 0 收藏 0 轉貼0 訂閱站台

http://zerojudge.tw/ShowProblem?problemid=d347

內容 :

Stan 和Ollie在玩一個乘法的遊戲。他們輪流對一個正整數 p 乘上2到9中的一個數。遊戲開始時,p=1且由Stan先開始。Stan乘完後換Ollie乘,然後再換Stan乘,如此一直下去。遊戲一開始時他們也訂 了一個整數 n (1 < n < 4294967295),誰先乘上一個2到9的數,使得 p>= n,他就是遊戲的贏家。

輸入說明 :

每組測試資料一列,含有1個整數 n。

輸出說明 :

每組測試資料輸出一列,輸出贏家是誰。

你應該要假設這兩個人都是很厲害的玩家(就是說,如果可以贏的話,絕對不會有失誤)。

範例輸入 :

3
38
168
162
17
34012226

範例輸出 :

Stan wins.
Stan wins.
Ollie wins.
Stan wins.
Ollie wins.
Stan wins.

提示 :

luckycat譯

出處 :

UVA 847 (管理:asas)




/**********************************************************************************/
/*  Problem: d347 "847 - A Multiplication Game" from UVA 847                      */
/*  Language: C                                                                   */
/*  Result: AC (20ms, 232KB) on ZeroJudge                                         */
/*  Author: morris1028 at 2011-06-15 18:06:18                                     */
/**********************************************************************************/


#include<stdio.h>
main() {
    long long n, p, i;
    while(scanf("%lld", &n) == 1)  {
        p = 1, i = 1;
        while(1) {
            if(i&1) p *= 9;
            else p *= 2;
            if(p >= n) {
                if(i&1)
                    puts("Stan wins.");
                else
                    puts("Ollie wins.");
                break;
            }
            i++;
        }
    }
    return 0;
}
/*
這題的解法就是在 n = 1 - 9 時為史丹贏、n = 10 - 18 為歐力贏、
n = 19 - 162 為史丹贏、n = 163 - 324 為歐力贏....。
也就是說,當史丹決定乘數時,p 用 9 乘,看它有沒有大於 n,
如果有大於 n,就是史丹贏;當為歐力決定乘數時,p 用 2 乘,
看它有沒有大於 n,如果有大於 n,就是歐力贏。
*/ 

台長: Morris
人氣(1,638) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: UVA |
此分類下一篇:d760. 10330 - Power Transmission
此分類上一篇:d196. 11341 - Term Strategy

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文