Начинаем раскодировать с начала.
Первая цифра в шифровке 5 – это начало только кода 5 (Д).
Вторая цифра 1 – это могло бы быть просто 1 (А), но тогда следующий код начинался бы с нуля, что невозможно. Значит, дальше идет 10 (И).
Остаётся 1912. Так как 9 не стоит в начале ни одного кода, 9 – окончание кода какой-то буквы, буду промежутки между буквами показывать черточкой: 19-12. 19 и 12 можно разбивать или не разбивать на коды, это даёт 4 варианта:
– 19-12 (СК)
– 1-9-12 (АЗК)
– 19-1-2 (САБ)
– 1-9-1-2 (АЗАБ)
Итого, имеем 4 варианта дешифровки:
5-10-19-12 (ДИСК)
5-10-1-9-12 (ДИАЗК)
5-10-19-1-2 (ДИСАБ)
5-10-1-9-1-2 (ДИАЗАБ)
using System;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
bool f;
double a,b,c, s, s1;
a = double.Parse(Console.ReadLine());
b = double.Parse(Console.ReadLine());
c = double.Parse(Console.ReadLine());
s = Math.Sqrt(((a + b + c) / 2) * (((a + b + c) / 2) - a) * (((a + b + c) / 2) - b) * (((a + b + c) / 2) - c));
a = double.Parse(Console.ReadLine());
b = double.Parse(Console.ReadLine());
c = double.Parse(Console.ReadLine());
s1= Math.Sqrt(((a + b + c) / 2) * (((a + b + c) / 2) - a) * (((a + b + c) / 2) - b) * (((a + b + c) / 2) - c));
if (s == s1)
f = true;
else
f = false;
Console.WriteLine(f);
Console.ReadKey();
}
}
}
program q;
var
a: integer;
b: real;
begin
b := 0;
read(a);
b := (a div 10 + a mod 10) / 2;
writeln(b);
end.
На Pascal'e
*Проверил*
Налево,налево,вниз, ,вниз,направо,направо,вверх,вверх,налево,налево,вниз, ,вниз,налево,
итак еще4 раза
В любой такой последовательности при перестановке двоек и единиц результат не меняется. Например, 121121 и 111122 дадут один и тот же результат. Поэтому из любой последовательности сделаем наименьший номер (т.е. сначала идут все единицы, затем - двойки). Не забудем так же, что 2 и 3 взаимно просты, поэтому при разных количествах единиц и двоек результаты будут различны.
Т.к. всего команд 6, то чисел будет лишь 7:
111111
111112
111122
111222
112222
122222
222222
Ответ: 7