约瑟夫环

来源:互联网 发布:js video 播放监控 编辑:程序博客网 时间:2024/06/05 05:57
#include<iostream>
#include<list>
using namespace std;
int josef(int n,int m)
{
    if(n==0||m==0)return -1;
    if(n==1)return 1;
    int i,j;
    list<int> L;
    for(i=0; i<n; i++)
        L.push_back(i+1);
    list<int>::iterator it=L.begin();
    for(i=0; i<n-1; i++)
    {
        for(j=0; j<m-1; j++)
        {
            it++;
            if(it==L.end())
                it=L.begin();
        }
        it=L.erase(it);
        if(it==L.end())
            it=L.begin();
    }
    it=L.begin();
    return *it;
}
int main()
{
    int n,m;
    while(cin>>n>>m)
//for(int j=10;j<100;j++)
    {
//n=j;
//m=j-5;
        cout<<josef(n,m)<<endl;
        int i;
        int ans=0;
        for(i=2; i<=n; i++)
            ans=(ans+m)%i;
        cout<<ans+1<<endl;
    }
    return 0;
}

0 0
原创粉丝点击