题目:
已知n个人(以编号1,2,3--n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人有出列;以此规律重复下去,知道圆桌周围的人全部出列。输出出列顺序和最后剩下的人。
分析:
这道题用我们平常的数组也能做,只不过要用到那个取模,
上代码:
#include <iostream>
using namespace std;
int main(void)
{
int n,p=0,m,k=0; cin>>n>>m; int arr[n]; for(int i=0;i<n;i++) { arr[i]=i+1; } while(n>1) { p=(p+m-1)%n; cout<<++k<<" "<<arr[p]<<endl; for(int j=p+1;j<n;j++) { arr[j-1]=arr[j]; } n--; if(p==n) p=0; } cout<<"最后剩下的是"<<arr[p]<<endl; return 0;
}