题目描述
N个人围成一圈,从第一个开始报数,第M个将被杀掉,再由下一个人开始重新报数,直到最后剩下一个人。例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。
输入
两个正整数N和M。
输出
剩下的最后一个人的编号。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int a[10001];
memset(a,0,sizeof(a));
int left=n,i=1,num=0;
while(left>1)
{
if(a[i]==0)
{
num++;
if(num==m)
{
a[i]=1;
left--;
num=0;
}
}
i++;
if(i>n)
{
i=1;
}
}
for(int j=1;j<=n;j++)
{
if(a[j]==0)
{
cout<<j;
}
}
}