Исполнитель А16 преобразует число, записанное на экране.
У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 2
3. Умножить на 2
Первая из них увеличивает число на экране на 1, вторая увеличивает его на 2, третья умножает его на 2.
Программа для исполнителя А16 – это последовательность команд.
Сколько существует таких программ, которые исходное число 3 преобразуют в число 23 и при этом траектория вычислений программы содержит число 10 и не содержит чисел 11 и 12?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 132 при исходном числе 7 траектория будет состоять из чисел 8, 16, 18.
class Program
{
static void Main()
{
var random = new Random(DateTime.Now.Millisecond);
int n = 3;
var f = new int[n, n];
int c;
Console.WriteLine("f:");
for (var i = 0; i < n; i++)
{
for (var j = 0; j < n; j++)
{
f[i, j] = random.Next(0, 9);
Console.Write(f[i, j] + " ");
}
Console.WriteLine();
}
Console.WriteLine();
for(int i = 0; i < n; i++) {
if (f[i,0] != f[i,i]){
c = f[i,0]; f[i,0] = f[i,i]; f[i,i] = c;
}
}
Console.WriteLine("New f:");
for(int i = 0; i < n; i++){
for (var j = 0; j < n; j++)
Console.Write(f[i,j] + " ");
Console.WriteLine();
}
Console.WriteLine();
Console.ReadKey();
}
}
Пример:
f:
8 1 0
3 6 3
0 5 7
New f:
8 1 0
6 3 3
7 5 0