P1996 约瑟夫问题

来源:互联网 发布:数据库的书籍 编辑:程序博客网 时间:2024/04/28 15:53

题目描述

n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.

输入输出格式

输入格式:

n m

输出格式:

出圈的编号

#include<iostream>
using namespace std;
int n,m,s,f,t;
bool a[101];
int main()
{
    cin>>n>>m;
    for (t=1;t<=n;++t)
        a[t]=false;
    f=0;
    t=0;
    s=0;
    do
    {
        ++t;
        if (t==n+1)
            t=1;
        if (a[t]==false)
          ++s;
        if (s==m)
        {
            s=0;
            cout<<t<<" ";
            a[t]=true;
            f++;
        }
    }
        while(f!=n);
        return 0;
}


原创粉丝点击