Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
1 / 1 / 1
Регистрация: 25.07.2017
Сообщений: 98
1

Удалить каждый K элемент массива пока не останется 1 элемент

13.09.2017, 14:10. Просмотров 2763. Ответов 2
Метки нет (Все метки)

Есть задача удалить каждый K элемент массива пока не останется 1 уцелевший.
Вот пример вводим N к-лово элементов в нумерации от 1 до N.
Ввод:
10 3
Вывод:
4

В нашем варианте мы начнем с того, что выстроим в круг N человек, пронумерованных числами от 1 до N, и будем исключать каждого k-ого до тех пор, пока не уцелеет только один человек.
Например, если N=10, K=3, то сначала умрет 3-й, потом 6-й, затем 9-й, затем 2-й, затем 7-й, потом 1-й, потом 8-й, за ним - 5-й, и потом 10-й. Таким образом, уцелеет 4-й.
Требуется написать программу, которая по заданным N и K будет определять номер уцелевшего человека.



Заранее спасибо всем кто будет участвовать в теме.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.09.2017, 14:10
Ответы с готовыми решениями:

Из последовательности удалять каждый K-ый элемент до тех пор, пока не останется одно число
Всем привет. Есть следующее задание: Данна последовательность длинной N (1, 2, ..., N). Дано...

Какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент
Создать структуру с именем Subject с полями: фамилия, имя. Сформиро-вать замкнутое кольцо...

Определить, какой элемент останется в кольцевом списке последним, если по очереди удалять из списка каждый n-й элемент
Создать структуру с именем Subject с полями: фамилия, имя. Сформировать замкнутое кольцо...

Задача Иосифа Флавия. Удалить каждый второй элемент из списка и в конце вывести на экран последний оставшийся элемент
Создать циклический список, в котором находятся элементы от 1 до N. Нужно написать программу,...

2
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
13.09.2017, 14:13 2
Лучший ответ Сообщение было отмечено shuvadanil как решение

Решение

Классическая задача Иосифа Флавия.

Добавлено через 44 секунды
http://www.e-maxx-ru.1gb.ru/algo/joseph_problem
C++
1
2
3
int joseph (int n, int k) {
    return n>1 ? (joseph (n-1, k) + k - 1) % n + 1 : 1;
}
C++
1
2
3
4
5
6
int joseph (int n, int k) {
    int res = 0;
    for (int i=1; i<=n; ++i)
        res = (res + k) % i;
    return res + 1;
}
1
1 / 1 / 1
Регистрация: 25.07.2017
Сообщений: 98
13.09.2017, 20:54  [ТС] 3
MrGluck, Спасибо большое за помощь.Все работает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2017, 20:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти средний по величине элемент в множестве элементов массива, в которое входит каждый третий элемент массива
Есть массив из 100 рандомных элементов Нужно найти средний по величине элемент в множестве...

Рекурсивные функции. Разделение эл. массива, пока не останется 1 элемент
Вся суть в том что нужно взять массив из 10 элементом и разделить его на пополам (например от 1 до...

Проверить, упорядочены ли элементы, заменить первый нулевой элемент и удалить указанный элемент из массива
Найти произведение отрицательных элементов массива, следующих после первого положительного...

Удалить первый нулевой элемент массива и добавить после каждого чётного элемента особый элемент
Здравствуйте! Имеется такая задача: 1) Сформировать одномерный массив целых чисел, используя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.