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

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

13.09.2017, 14:10. Просмотров 1411. Ответов 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)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2017, 14:10
Ответы с готовыми решениями:

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

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

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

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

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

2
MrGluck
Форумчанин
Эксперт CЭксперт С++
8136 / 4987 / 1436
Регистрация: 29.11.2010
Сообщений: 13,460
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
shuvadanil
1 / 1 / 1
Регистрация: 25.07.2017
Сообщений: 98
Завершенные тесты: 5
13.09.2017, 20:54  [ТС] 3
MrGluck, Спасибо большое за помощь.Все работает.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2017, 20:54

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

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

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


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

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

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