Другие языки программирования и технологии

Определить число k, которое отсутствует в неупорядоченном массиве чисел (0, 1,...k-1,k+1,...n) за один цикл

Помогите пжл, понять эту задачу.

(0, 1,...k-1,k+1,...n) как это понять?
ну что тут понимать : есть n+1 последовательных, но не упорядоченных чисел от нуля до эн, все по разу присутствуют в масиве, а одно число пропущено.. . берите из исходного масива каждое число по очереди, и ставьте на свое место в новом массиве от нуля до эн.. . потом пройти надо этот массив и посмотреть какое место свободное осталось. . тока так 2 прохода получается, может как-то ловчей за один проход можно сделать - хз ))))
Николай Конаев
Николай Конаев
36 737
Лучший ответ
(0, 1,...k-1,k+1,...n) - все целые числа от нуля до n. Одно из них будет отсутствовать.
Артур Абдешев
Артур Абдешев
53 156
ну смотри
сумма от 0 до n будет (n+1)*n/2

все элементы вычитаешь из суммы

сколько осталось - того и нет
наскреб тут пару вариантов решения
писал на 1С
// вариант 1
пробегаем по массиву чисел в одном цикле, и сверяем
значение числа с индексом, исходя из задачи они должны быть равны
если значение не равно индексу, то мы как раз и перепрыгнули отсутствующее число
т. е. оно на единицу меньше индекса

Для x = 0 По n Цикл
Если mas[x] <> x Тогда
k = mas[x]-1;
Прервать;
КонецЕсли;
КонецЦикла;

// вариант 2
как говорил "Зло" сумма считается по формуле, соответственно сначала получаем сумму чисел массива и вычитаем ее из суммы по формуле, получаем пропавшее число

Sum = 0;

Для x = 0 По n Цикл
Sum = Sum + mas[x];
КонецЦикла;

k = (n+1)*n/2-Sum;

Похожие вопросы