Решение задачи Раскраска таблицы умножения с Acmp

Без пояснения   Просмотров: 43


Таблицей умножения назовем таблицу размера n строк на m столбцов, в которой на пересечении i-ой строки и j-ого столбца стоит число i∙j (строки и столбцы нумеруются с единицы).

В одной из математических школ было решено провести педагогический эксперимент. Для того, чтобы ученикам было проще запоминать таблицу умножения, некоторые числа в ней будут покрашены в красный, некоторые - в синий, а некоторые - в зеленый цвет (оставшиеся числа будут черными).

Процесс покраски чисел можно условно разбить на четыре этапа. На первом этапе все числа красятся в черный цвет. На втором - все четные числа красятся в красный цвет, на третьем – все числа, делящиеся на 3, красятся в зеленый цвет, на четвертом - все числа, делящиеся на 5, красятся в синий цвет.

Директор школы хочет знать, какое количество картриджей для принтеров необходимо закупить для печати таблиц. Поэтому ему необходима информация о том, сколько чисел какого цвета будет в одной раскрашенной таблице умножения n на m. Напишите программу, решающую задачу подсчета соответствующих количеств.

Код

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int n,m;
    cin >> n >> m;
    int a[n][m];
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < m; ++j)
            a[i][j] = 0;
 /*   for(int i = 0; i < n; ++i){
        for(int j = 0; j < m; ++j)
            cout << a[i][j] << " ";
        cout << endl;
    }*/
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            if((i * j) % 2 == 0)
                a[i - 1][j - 1] = 1;
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            if((i * j) % 3 == 0)
                a[i - 1][j - 1] = 2;
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            if((i * j) % 5 == 0)
                a[i - 1][j - 1] = 3;
     
    int  s = 0,s1 = 0,s2 = 0,s3 = 0;
    for(int i = 0; i < n; ++i){
        for(int j = 0; j < m; ++j){
            if(a[i][j] == 1)
                s++;
            if(a[i][j] == 2)
                s1++;
            if(a[i][j] == 3)
                s2++;
            if(a[i][j] == 0)
                s3++;
        }
        }
    cout << "RED : " << s << endl;
    cout << "GREEN : " <<  s1 << endl;
    cout << "BLUE : " << s2 << endl;
    cout << "BLACK : " << s3;
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться