将所有人从1编号,第一个人从1报数,每次数到m的人被杀,后面的人再从1报数,依此循环,直到剩下一人。已知最后一人的编号k,求至少有多少人

下面是我写的程序,但是花的时间有点长,有没有什么其他的思路可以缩短运行时间呀?
万分感谢!


 
#include<iostream>
using namespace std;
int cir(int n,int m)
{
    int p=0;
    for(int i=2;i<=n;i++)
    {
        p=(p+m)%i;
    }
    return p+1;
}
int main()
{
    int m1,k;
    int s=0;
    cin>>m1>>k;
    for(int j=1;;j++)
    {
        s=cir(j,m1);
        if(s==k)
        {
            cout<<j<<endl;
            break;
        }
    }
    return 0;
}

这题目怎么好残忍,怎么还搭上我的链接?是帮我呢还是黑我啊??????????????