测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41127. 约瑟夫问题

填空题 容易

题目描述

约瑟夫问题

题目描述

N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;…输出依次出圈的人的编号。

输入格式

输入N和M

输出格式

输出一行,依次出圈的人的编号

样例输入

8 5

样例输出

5 2 8 7 1 4 6 3

参考答案

#include<stdio.h> int main() { int n, m, i, j = 1, count = 0; int a[10001], b[10001]; scanf("%d%d", &n, &m); for (i = 1; i <= n; i++) { a[i] = i; } int x = n; while (x >= 1) { for (i = 1; i <= n; i++) { if (a[i] != 0) { count++; } if (count == m) { b[j] = a[i]; a[i] = 0; count = 0; j++; x--; } } } for (j = 1; j <= n; j++) { printf("%d ", b[j]); } return 0; }
上一题 下一题