#include
#include
#include
void monkey(int, int, int);
int main(void)
{
int n;
scanf("%d", &n);
int i;
for (i = 1; i <= n; i++)
{
int n, m, p;
scanf("%d %d %d", &n, &m, &p);
monkey(n, m, p);
}
return 0;
}
void monkey(int n, int m, int p)
{
int *ar = (int *)malloc((n + 1)*sizeof(int));
memset(ar, 0, n + 1);
int out =n;
int now = p - 1;
while (out-1)
{
int i;
for (i = 1; i <= m; i++)
{
if (now + 1 > n)
now = 1;
else
++now;
if (ar[now])
--i;
if (!(ar[now]) && i == m)
ar[now] = 1;
}
--out;
}
printf("%3d\n", now);
free(ar);
}
以前写了个一样的你看看
#include
#define MAX 100
#define step 3
#define begin 1
int main()
{
int n,cnt,i=0,j=0;
int M,N,P;
int a[MAX];
scanf("%d%d%d",&M,&N,&P);
cnt=M;
while(i for( i=P-1,j=1;cnt>1;i==M-1?i=0:i++)
{
if(a[i]!=1) {
if(j==N){
a[i]=1;
j=1;
// printf("%d out\n",i+1);
--cnt;
}
else
j++;
}
}
for(i=0;a[i];i++);
printf("%3d",i+1);
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。