у первого мудреца парная сумма.
решение: если он точно знает, что сумма второго мудреца парная, то у него парная и в коробке парная. если бы у первого была бы непарная, то у второго была бы или парная, или не парная(тоже и в коробке). точно знать какая суммау второго можно знать.только в этом случае: 1 2 3
1-ый мудрец (п) (н) (н)
2-ой мудрец (п) (п) (н)
коробка (п) (н) (п)
Объяснение:
#include<iostream>
using namespace std;
//добавлен фиктивный 0-й элемент, чтобы нумерация была как
//в задании (в с++ нумеровать массивы можно только с 0)
int arr[16] = {0, 10, 22, 16, 11, 45, 25, 25, 4, 10, 7, 8, 25, 10, 1, 9};
// чтобы найти сумму в поддереве вершины i, нужно вызвать
// recurrent_sum(i);
int recurrent_sum(int current){
//условие выхода из рекурсии
if(current > 15){
return 0;
}
return arr[current] + recurrent_sum(2 * current) + recurrent_sum(2 * current + 1);
}
int even_counter(int current){
if(current > 15){
return 0;
}
return (arr[current] % 2 == 0 ? 1 : 0) + even_counter(2 * current) + even_counter(2 * current + 1);
}
int main(){
//проверяем, что всё работает.
cout << recurrent_sum(1) << endl; //228
cout << even_counter(1) << endl; //7
return 0;
}