#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <locale.h>
int* generate(int n);
void show(int* a, int n);
void kill(int *a, int n, int i);
void circle(int *a, int n, int k, int i);
int main() {
int n = 10, k = 2, *a = NULL;
a = generate(n);
show(a, n);
circle(a, n, k, 0);
}
// здесь храним номера всех живущих на данный момент воинов
int* generate(int n)
{
int* a;
int i;
a
= (int*)malloc(n
*sizeof(int)); if (a == NULL)
return NULL;
for (i = 0; i < n; i++) {
*(a + i) = i + 1;
}
return a;
}
void show(int *a, int n) {
int i;
printf("Участвует воинов: %d \n", n
); for (i = 0; i < n; i++) {
}
}
// воин умирает - удаляем его из массива, а тех, кто стоял за ним, сдвигаем на один элемент влево
void kill(int *a, int n, int i) {
int j;
for (j = i; j < n - 1; j++)
*(a + j) = *(a + j + 1);
}
void circle(int *a, int n, int k, int i) {
int ii;
if (n > k) {
ii = i + k - 1;
if (ii >= n) {
ii = ii % n;
}
kill(a, n, ii);
circle(a, n - 1, k, ii);
}
printf("Оставшиеся в живых: %d \n", n
); for (i = 0; i < k; i++) {
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hbGxvYy5oPgojaW5jbHVkZSA8bG9jYWxlLmg+CgppbnQqIGdlbmVyYXRlKGludCBuKTsKdm9pZCBzaG93KGludCogYSwgaW50IG4pOwp2b2lkIGtpbGwoaW50ICphLCBpbnQgbiwgaW50IGkpOwp2b2lkIGNpcmNsZShpbnQgKmEsIGludCBuLCBpbnQgaywgaW50IGkpOwoKaW50IG1haW4oKSB7CglpbnQgbiA9IDEwLCBrID0gMiwgKmEgPSBOVUxMOwoJYSA9IGdlbmVyYXRlKG4pOwoJc2hvdyhhLCBuKTsKCWNpcmNsZShhLCBuLCBrLCAwKTsKfQoKLy8g0LfQtNC10YHRjCDRhdGA0LDQvdC40Lwg0L3QvtC80LXRgNCwINCy0YHQtdGFINC20LjQstGD0YnQuNGFINC90LAg0LTQsNC90L3Ri9C5INC80L7QvNC10L3RgiDQstC+0LjQvdC+0LIKaW50KiBnZW5lcmF0ZShpbnQgbikKewoJaW50KiBhOwoJaW50IGk7CglhID0gKGludCopbWFsbG9jKG4qc2l6ZW9mKGludCkpOwoJaWYgKGEgPT0gTlVMTCkKCQlyZXR1cm4gTlVMTDsKCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKCQkqKGEgKyBpKSA9IGkgKyAxOwoJfQoJcmV0dXJuIGE7Cn0KCnZvaWQgc2hvdyhpbnQgKmEsIGludCBuKSB7CglpbnQgaTsKCXNldGxvY2FsZShMQ19BTEwsICJSdXNzaWFuIik7CglwcmludGYoItCj0YfQsNGB0YLQstGD0LXRgiDQstC+0LjQvdC+0LI6ICVkIFxuIiwgbik7Cglmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJcHJpbnRmKCIlZCAiLCAqKGEgKyBpKSk7Cgl9CglwcmludGYoIlxuIik7Cn0KCi8vINCy0L7QuNC9INGD0LzQuNGA0LDQtdGCIC0g0YPQtNCw0LvRj9C10Lwg0LXQs9C+INC40Lcg0LzQsNGB0YHQuNCy0LAsINCwINGC0LXRhSwg0LrRgtC+INGB0YLQvtGP0Lsg0LfQsCDQvdC40LwsINGB0LTQstC40LPQsNC10Lwg0L3QsCDQvtC00LjQvSDRjdC70LXQvNC10L3RgiDQstC70LXQstC+CnZvaWQga2lsbChpbnQgKmEsIGludCBuLCBpbnQgaSkgewoJaW50IGo7Cglmb3IgKGogPSBpOyBqIDwgbiAtIDE7IGorKykKCQkqKGEgKyBqKSA9ICAqKGEgKyBqICsgMSk7Cn0KCnZvaWQgY2lyY2xlKGludCAqYSwgaW50IG4sIGludCBrLCBpbnQgaSkgewoJaW50IGlpOwoJaWYgKG4gPiBrKSB7CgkJaWkgPSBpICsgayAtIDE7CgkJaWYgKGlpID49IG4pIHsKCQkJaWkgPSBpaSAlIG47CgkJCX0KCQlraWxsKGEsIG4sIGlpKTsKCQljaXJjbGUoYSwgbiAtIDEsIGssIGlpKTsKCX0KCXByaW50Zigi0J7RgdGC0LDQstGI0LjQtdGB0Y8g0LIg0LbQuNCy0YvRhTogJWQgXG4iLCBuKTsKCWZvciAoaSA9IDA7IGkgPCBrOyBpKyspIHsKCQlwcmludGYoIiVkICIsICooYSArIGkpKTsKCX0KCWZyZWUoKmEpOwoJcHJpbnRmKCJcbiIpOwp9