grids 2746 约瑟夫有关问题

grids 2746 约瑟夫问题题意中文不解释思路这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为

grids 2746 约瑟夫问题
题意
中文不解释
思路
这个一道模拟题,要按照题意的步骤执行就可以得出结果,基本步骤为

(1)数数
(2)所数的数从列表中取出
(3)判断是否为1,是则输出,不是则继续
总结
暂无
代码
(I)方法一:使用数组+前移






(1)C




#include "stdio.h"//#include "stdlib.h"#define max 300int a[max+2];int main(){ int n,m; int i,j; while(scanf("%d%d",&n,&m) != EOF && !(n==0 && m==0)) {        for(i=0;i<n;i++) a[i]=i+1;        i=0;        while(n!=1)        {            i=(i+m-1)%n;            for(j=i+1;j<n;j++){a[j-1]=a[j];}            n--;        }        printf("%d\n",a[0]);    }    //system("pause");    return 0;}


(2)C++




#include "iostream"//#include "cstdlib"using namespace std;const int MAX = 300;int a[MAX+2];int main(){    int n,m; while((cin>>n>>m) && !(n==0 && m==0)) {        int i;        for(i=0;i<n;i++) a[i]=i+1;        i=0;        while(n!=1)        {            i=(i+m-1)%n;            for(int j=i+1;j<n;j++){a[j-1]=a[j];}            n--;        }        cout<<a[0]<<endl;    }    //system("pause");    return 0;}