Сумма всех чисел от 1 до 100 = 5050
если из 5050 вычесть сумму перемешанных цифр, это и даст то число, которое было исключено из массива.
Я вчера немного другое решение придумал.
Сумма двух чисел это одно действие, необходимо просуммировать все числа. При убирании какого нибудь числа получатся разные суммы, эти суммы можно заранее узнать. Получаем суммирование чисел уже с удалённым числом составит 98 действий, а потом надо сравнить на равенство со всеми предполагаемыми числами - чисел будет 100, то есть это ещё 100 действий и того получаем 198 действий.
Но решение предложенное
JAZZ ещё оптимальней - если не считать сумму 5050 за действие, то в таком случае в итоге получим 99 действий.
Вторую задачу буду сейчас думать.
Оптимальное решение второй задачи:
есть массив int[100] целых чисел от 1 до 100 (могут быть дубли), перемешиваем, задача найти 2 числа, сумма которых составит 52, ну и как обычно надо пооптимальнее
пока не нашёл.
Предложу вот какое:
52 можно получить следующим образом:
51+1
50+2
49+3
....
26+26
далее числа будут повторяться.
Поэтому нам надо сравнивать числа от 1 до 51, это в наихудшем варианте 5100 сравнений.
Пока получается 5100 действий.
Может кто предложит меньше.......
даже 5200 действий так как надо искать два числа 26.