用链表实现约瑟夫环(没用)

用链表实现约瑟夫环

Description
你听说过约瑟夫问题吗?问题大致如下:首先n个人围成一个圈,标记为1到n号。接着,从1号开始报数(从1开始),然后2号报数,然后3号。。。当有人报到到m时,这个人就要踢出比赛,然后从被踢出的人的下一个人开始,重新报数(从1开始)。这样经过n-1次后,就只剩下了一个人,问最后剩下的那个人是几号?
Input
第1行为T,表示有T组数据;第2行到第T+1开始,每行输入n和m,n表示有几个人,m为上述的每报数m次就要踢出一个人1=<n<=100, 1=<m<=100
Output
一个数,表示最后剩下了几号
Sample Input
2
5 3
6 4
Sample Output
4
5
没用链表

#include<stdio.h>
int main()
{
 	int T,n,m,a[102],t;
 	scanf("%d",&T);
 	while(T--)
 	{
  		scanf("%d%d",&n,&m);
  		for(int i=1;i<=n;i++)
   		a[i]=i;
  		t=0;
  		while(n>1)
  		{
   			t+=m-1;
   			t%=n;
   			for(int i=t+1;i<=n;i++)
    				a[i]=a[i+1];
   			n--; 
  		}
  		printf("%d\n",a[1]);
 	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43613299/article/details/85567218