Max
()
2003/06/05 13:20
Re: Задача на логику

нужно, что б первый быстро прокричал цвета колпаков остальных, пока его не схватили.

серьезно: кажется, придумал. обнумеруем цвета, скажем, как: красный - 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 - зеленый.

следующий зек проделывает те же вычисления, основываясь на предыдущих остатках. самому последнему будет тяжелей всего вычислять :-).





Можно отправить нам ящик электромыла Спорный мяч

Rambler's Top100