Таблицей умножения назовем таблицу размера n строк на m столбцов, в которой на пересечении i-ой строки и j-ого столбца стоит число i · j (строки и столбцы нумеруются с единицы). В одной из математических школ было решено провести педагогический эксперимент. Для того, чтобы ученикам было проще запоминать таблицу умножения, некоторые числа в ней будут покрашены в красный, некоторые — в синий, а некоторые — в зеленый цвет (оставшиеся числа будут черными). Процесс покраски чисел можно условно разбить на четыре этапа. На первом этапе все числа красятся в черный цвет. На втором — все четные числа красятся в красный цвет, на третьем — все числа, делящиеся на 3, красятся в зеленый цвет, на четвертом — все числа, делящиеся на 5, красятся в синий цвет. Директор школы хочет знать, какое количество картриджей для принтеров необходимо закупить для печати таблиц. Поэтому ему необходима информация о том, сколько чисел какого цвета будет в одной раскрашенной таблице умножения n на m. Напишите программу, решающую задачу подсчета соответствующих количеств
Пример ввода:
10 10
Пример вывода:
RED : 21
GREEN : 39
BLUE : 36
BLACK : 4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | using System; using System.Linq; var values = Console.ReadLine().Split(); var rows = int .Parse(values[0]); var columns = int .Parse(values[1]); var colors = Enum.GetValues<Color>().ToDictionary(color => color, _ => 0); for ( var y = 1; y <= rows; y++) { for ( var x = 1; x <= columns; x++) { var product = y * x; Color color = GetColor(product); colors[color]++; } } foreach ( var (color, count) in colors) { Console.WriteLine($ "{color}: {count}" ); } static Color GetColor( int product) { var color = Color.Black; if (product % 2 == 0) { color = Color.Red; } if (product % 3 == 0) { color = Color.Green; } if (product % 5 == 0) { color = Color.Blue; } return color; } internal enum Color { Black, Red, Green, Blue } |