Дан массив из N чисел. В нём находятся случайные числа из диапазона [0..N]. Все числа отличаются. При помощи одного цикла нужно найти, какого числа из диапазона [0..N] не хватает в массиве.
Логика следующая:
Мы должны получить два числа - сумму всех чисел, которые должны быть в массиве, и сумму чисел, которые есть в массиве. Затем, просто вычитаем из первой сумму вторую и получаем число, которого нет.
Код на Python:
В данном коде сделан генератор массива (condition) и решение (solution).
#!/usr/bin/python
# condition
import random
N = 10
source_array = list(range(0, N+1))
random.shuffle(source_array)
source_array.pop()
print source_array
# solution
current_sum = 0
full_sum = 0
inc_value = 1
for x in source_array:
current_sum += x
full_sum += inc_value
inc_value += 1
found_value = full_sum - current_sum
print "Found value " + str(found_value)