求助
  • 板块灌水区
  • 楼主__QWQ_qwq__
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/2/26 21:31
  • 上次更新2023/10/23 23:38:18
查看原帖
求助
845367
__QWQ_qwq__楼主2023/2/26 21:31

题目:

猴子选大王

题目描述

N只猴子选大王,选举的办法是:

排成一排,从头到尾报数,报到\red mm的倍数的退出,直到全部报完.

然后从尾到头开始逆向报数,同样报到m的倍数的退出。

第三遍从头到尾,第四遍从尾到头,直到最后余下的一只为猴王,编程找出猴王的位置。

输入格式

二个整数n,m(6≤n≤100000,6≤m≤100)。

输出格式

退出顺序占一行,数之间有一空格。第二行一个数,即猴王所在位置。

样例

输入样例

8 5

输出样例

5 6 2 7 4 8 3

1 代码:

#include <iostream>
using namespace std;
int fn(int a[], int n)
{
    int i,j,t=0;
    for(i=0;i<=n;i++)
        a[i]=1;
    for(i=1;i<=n;i++)
    {
        j=1;
        while(j<=3)
        {
            t=(t+1)%n;
            if(a[t]==1)j++;
        }
        a[t]=0;
    }
    return t;
}
int main()
{
	int n,a[1000],i;  
	cin>>n;     
	a[0]=0;
	for(i=1;i<=n;i++)
   		a[i]=i;
	i=fn(a,n);
	cout<<i;
	return 0;
}
2023/2/26 21:31
加载中...