Josephus 排列改编

来源:互联网 发布:淘宝五皇冠店铺排名 编辑:程序博客网 时间:2024/04/27 08:46
★实验任务
假设N 个竞赛者排成一个环形。给定一个正整数 M>=N,从指定的第K 个人开始,沿
环计数,每遇到第M 个人就让其出列,且 M 1,计数继续进行下去。这个过程一直进行
到所有的人都出列为止。
★数据输入
输入三个正整数NMK
N<=3000N<=M<=1000000000K<=N
★数据输出
输出出列序列
输入示例 输出示例
5 8 2      4

           2

           1

           3

           5


  
 #include<stdio.h>  
int main(){  
    int n,m,k;  
    int a[3000];  
    scanf("%d%d%d",&n,&m,&k);  
    for(int t=0;t<n;t++){  
        a[t]=t+1;}  
    for(int i=1;n;i++,n--,m--){  
         k=(k+m-1)%n;  
        printf("%d\n",a[k-1]);  
        for(int j=0;n-k-j;j++)  
            a[k+j-1]=a[k+j];  
    }  
    return 0;  
}  
       

0 0
原创粉丝点击