專案七、某花果山有一100只以內的猴群。某一天要推選猴王,需分別進行斗智斗勇兩場比賽。
(1)斗智:所有猴子圍成一大圈,分別進行編號:1,2,……,從“1”開始數數,數到“5”的就退出圈外,最后剩下一人;然后所有猴子按原來的編號又重新圍成一大圈,從“1”開始數數,數到“8”的就退出圈外,最后又剩下一人。
(2)斗勇:在經過斗智留下的兩人中進行斗勇,拳腳相加,勝者為王。
一只瘦猴子姍姍來遲,環視一周,找了一個位置站了下來;在斗智的兩次報數中,最后留下的都是他,他理所當然的就是猴王。
請問:(1)山中共有多少只猴子?(2)瘦猴子所站位置的編號是多少?
uj5u.com熱心網友回復:
僅供參考:#include <stdio.h>
int game(int *p, int n, int m)
{
int i, c, t;
c = t = 0;
for(i = 0; i < n; i++) p[i] = i + 1;
i = 0;
while(t < n-1)
{
if(p[i]) c++;
if(c == m)
{
p[i] = 0;
t++;
c = 0;
}
i = (i + 1) % n;
}
for(i = 0; i < n; i++)
{
if(p[i]) break;
}
return p[i];
}
int main(void)
{
int n;
int arr[100];
for(n = 2; n <= 100; n++)
{
if(game(arr, n, 5) == game(arr, n, 8))
{
printf("Monkey Count:\t%d\t", n);
printf("Winner ID:\t%d\n", game(arr, n, 5));
}
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/241128.html
標籤:C語言
上一篇:關于485輪詢邏輯問題
下一篇:看看這個吧
