描述
有M个人,其编号分别为1-M。这M个人按顺序排成一个圈。现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然后又从下一个人开始又从1开始依次报数,数到N的人又出列...如此循环,直到最后一个人出列为止。
输入描述
输入只有一行,包括2个整数M(8 <= M <= 15 ),N( 5 <= N <= 32767 )。之间用一个空格分开。
输出描述
输出M行,每行一个整数。
用例输入 1
9 6
用例输出 1
6 3 1 9 2 5 4 8 7
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int li[a]={0};
for (int i=0;i<a;i++)
{
li[i]=i+1;
}
int x=0;
int y=0;
while (1)
{
for (int i=0;i<a;i++)
{
if (li[i]!=0) x++;
if (x==b && li[i]!=0)
{
cout<<i+1<<endl;
x=0;
y++;
li[i]=0;
}
}
if (y==a-1)
{
for (int j=0;j<a;j++)
{
if (li[j]!=0)
{
cout<<li[j]<<endl;
break;
}
}
break;
}
}
}
标签:数到,int,约瑟夫,问题,用例,出列,报数,输入
From: https://blog.csdn.net/whycthe/article/details/139377252