3982: 猴子选大王

3982: 猴子选大王
时间限制: 1 Sec 内存限制: 128 MB
提交: 219 解决: 79
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
N只猴子选大王。选举办法如下:从头到尾1、2、3报数,凡报3的退出,余下的从尾到头1、2、3报数,凡报3退出;余下的又从头到尾报数,还是报3的退出;依此类推,当剩下的两只猴子时,取这时报数报1的为王。若想当猴王,请问当初应占据什么位置?

输入
猴子总数N,N<1000。

输出
猴王所在的位置。

样例输入
10

样例输出
8

提示
【样例分析】:十只猴子1-10编号,则出圈的次序为
猴子编号:1 2 3 4 5 6 7 8 9 10
出圈次序:3 6 9 7 2 5 4 10 剩下8和1时,8号猴子报1为大王

来源/分类
C语言-数组

答案如下
#include<stdio.h>
int main()
{
int a[1010],i,j,k,m=0,n,t;
scanf("%d",&n);
for(i=0;i<n;i++)
a[i]=i+1;
for(i=0;i<n;i++)
{
if(mn-2)
{
if(i%2
0)
for(j=0;j<n;j++)
if(a[j]!=-1)
{
printf("%d\n",a[j]);
break;
}
if(i%21)
for(j=n-1;j>=0;j–)
if(a[j]!=-1)
{
printf("%d\n",a[j]);
break;
}
break;
}
if(i%2
0)
{
t=0;
for(j=0;j<n;j++)
{
if(a[j]!=-1)
{
t++;
if(t3)
{
t=0;
a[j]=-1;
m++;
}
}
}
}
if(i%2
1)
{
t=0;
for(j=n-1;j>=0;j–)
{
if(a[j]!=-1)
{
t++;
if(t==3)
{
a[j]=-1;
t=0;
m++;
}
}
}
}
}
}

上一篇:Python求和


下一篇:产生1百万个不重复的随即数