Для сложения справедлив переместительный (коммутативный) закон, значит, порядок команд в программе не имеет значения для результата. Все команды увеличивают исходное число, поэтому количество команд не может превосходить (35 − 20)/2 = 7. При этом минимальное количество команд — 3.Таким образом, команд может быть 3, 4, 5, 6 или 7. Поэтому порядок команд не имеет значения, каждому числу команд соответствует один набор команд, которые можно расположить в любом порядке. Рассмотрим все возможные наборы и вычислим количество вариантов рассположения команд в них. Набор 1111112 имеет 7 возможных вариантов. Набор 111113 - 6 вариантов Набор 111222 - 20 возможных вариантов расположения: это число перестановок с повторениями 6!/(3!·3!). Набор 22222 - 1 вариант Набор 11322 - 30 возможных вариантов расположения: это число перестановок с повторениями 5!/(2! * 1! * 2!). Набор 3312 - 12 вариантов: это число перестановок с повторениями 4!/(2!·1!·1!)) Набор 333 - 1 вариант.
Все команды увеличивают исходное число, поэтому количество команд не может превосходить (35 − 20)/2 = 7.
При этом минимальное количество команд — 3.Таким образом, команд может быть 3, 4, 5, 6 или 7. Поэтому порядок команд не имеет значения, каждому числу команд соответствует один набор команд, которые можно расположить в любом порядке.
Рассмотрим все возможные наборы и вычислим количество вариантов рассположения команд в них.
Набор 1111112 имеет 7 возможных вариантов.
Набор 111113 - 6 вариантов
Набор 111222 - 20 возможных вариантов расположения: это число перестановок с повторениями 6!/(3!·3!).
Набор 22222 - 1 вариант
Набор 11322 - 30 возможных вариантов расположения: это число перестановок с повторениями 5!/(2! * 1! * 2!).
Набор 3312 - 12 вариантов: это число перестановок с повторениями 4!/(2!·1!·1!))
Набор 333 - 1 вариант.
Всего имеем: 7 + 6 + 20 + 1 + 30 + 12 + 1 = 77 программ. ответ: 77.
Теперь все точно! )
namespace Znanija {
internal class Program {
private static void Main() {
var r = new Random(DateTime.Now.Millisecond);
var course = r.Next(1, 6);
var students = new int[5,8];
for (var i = 0; i < students.GetLength(0); i++) {
for (var j = 0; j < students.GetLength(1); j++) {
students[i, j] = r.Next(10, 40);
Console.Write("{0:d2} ", students[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("На курсе {0} кол-во студентов = {1}", course, CountStudents(students, course));
Console.ReadKey();
}
private static int CountStudents(int[,] students, int course) {
if (students.GetLength(0) < course) {
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Нет курса " + course);
return 0;
}
var number = 0;
for (var i = 0; i < students.GetLength(0); i++) {
number += students[course - 1, i];
}
return number;
}
}
}