m个人站成一圈,从某个人开始喊1,下一个开始喊2,以此类推,规定喊N的人被淘汰,被淘汰的下一个重新开始喊,请问最后谁留下?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int fun(int x, int N, int n)
{
int *num, i = 0, k = 0, flag_1 = 0;
if (x > n)
{
exit(1);
}
num = (int *)calloc(n, sizeof(int));
for (i = x - 1; i <= n; i++)
{
if (i == n) i = 0;
if (num[i] == 0)
{
k++;
if (flag_1 == n - 1) break;
}
if (k == N)
{
num[i] = 1;
k = 0;
flag_1++;
}
}
free(num);
return (i + 1) % n;
}
int main()
{
int x;
x = fun(1, 4, 5);
printf("%d\n", x);
retunr 0;
}