2010年2月17日 星期三

Problem 847 A multiplication game,Stan 和 Ollie 的遊戲

Problem 847 此題是史丹和歐力的遊戲,兩人選定一個數 n 後,將 p = 1 使用 2 到 9 之間的任一數累乘,而史丹先開始再換歐力,如此輪流,當 p 累乘到大於 n 時,則為此人獲勝。

這題的解法就是在 n = 1 - 9 時為史丹贏、n = 10 - 18 為歐力贏、n = 19 - 162 為史丹贏、n = 163 - 324 為歐力贏....。也就是說,當史丹決定乘數時,p 用 9 乘,看它有沒有大於 n,如果有大於 n,就是史丹贏;當為歐力決定乘數時,p 用 2 乘,看它有沒有大於 n,如果有大於 n,就是歐力贏。

以下為此題重點程式碼:
if (scanf("%lld", &n) < 1) break;
p = 1; i = 1;
while (1)
{
if (i % 2) p *= 9;
else p *= 2;
if (p >= n)
{
if (i % 2) printf("Stan wins.\n");
else printf("Ollie wins.\n");
break;
}
i ++;
}

By David.K

p847題目連結
回ACM題庫目錄
回首頁

沒有留言: