нужно, что б первый быстро прокричал цвета колпаков остальных, пока его не схватили.
серьезно: кажется, придумал. обнумеруем цвета, скажем, как: красный - 1, синий - 2, зеленый - 3. первый зек считает, сколько колпаков какого цвета он видит впереди себя (из 11). потом считает сумму, скажем: n1*красных + n2*синих + n3 *зеленых = n1 * 1 + n2 * 2 + n3 * 3 делит на 3, получает остаток от деления - либо 1, либо 2, 0 (или 3, для удобства). соответсвенно, называет цвет, как договаривались - тут оно может повезти, и спасется и первый несчастный зек :-). после, следующий зек повторяет те же вычисления из 10 колпаков: n1' * красных + n2' * синих + n3' *зеленых = n1' * 1 + n2' * 2 + n3' * 3 делит на 3, получает остаток от деления. если остаток отличается вниз в ряду 1,2,3,1,2,3.. на 1, то у него красный, если на 2 - синий, 3- зеленый. пример: первый видит 5 красных, 3 синих, зеленых: 5*1+3*2+3*3 = 20 делить на 3 - остаток 2. называет синий
у второго три возможности: 1) 4*1+3*2+3*3 = 19 делить на 3 - остаток 1 - цвет красный, соответственно. 2) 5*1+2*2+3*3 = 18 делить на 3 - остаток 0 или 3 - в последовательности 1,2,3,1,2,3.. тройка стоит на две ступени ниже от цифры 2 (посчитанной предыдущим зеком) - цвет синий. 3) 5*1+3*2+2*3 = 17 делить на 3 - остаток 2 - зеленый.
следующий зек проделывает те же вычисления, основываясь на предыдущих остатках. самому последнему будет тяжелей всего вычислять :-).
Это сообщение вы можете
|