Предлагаю для начала рассматривать только значения вида (x.. xor x..) Очевидно, скажем, если (x1 xor x2) = 0, то (x3 xor x4) = 1 Так что достаточно посчитать количество цепочек значений xor'ов, где нет двух стоящих подряд 0. Всего пять значений, так что можно посчитать все вручную. Например, составить дерево. Получилось 13 цепочек. Т.к. каждому значению .. xor .. соответствует пара возможных значений x (01 и 10), каждая цепочка будет соответствовать 2^5 = 32 возможным значениям x1..10. Соответственно, ответ: 13 * 32 = 416
С# консольное приложение
Объяснение:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//Ваш массив
string[] months = {"May","August","April","May","July"};
//Искать до тех пор пока в массиве есть "Май"
while (-1!=Array.IndexOf(months,"May"))
{
//Найти где находится Май в массиве
int index = Array.IndexOf(months, "May");
//Изменить май
months[index] = "Это не май";
}
//Для отладки
Console.ReadKey();
}
}
}
Очевидно, скажем, если (x1 xor x2) = 0, то (x3 xor x4) = 1
Так что достаточно посчитать количество цепочек значений xor'ов, где нет двух стоящих подряд 0. Всего пять значений, так что можно посчитать все вручную. Например, составить дерево.
Получилось 13 цепочек. Т.к. каждому значению .. xor .. соответствует пара возможных значений x (01 и 10), каждая цепочка будет соответствовать 2^5 = 32 возможным значениям x1..10.
Соответственно, ответ: 13 * 32 = 416