Задача
В театре [latex]n[/latex] рядов по [latex]m[/latex] мест в каждом. Даны две матрицы — в первой записаны стоимости билетов. Вторая сообщает, какие билеты проданы, а какие — нет ([latex]1[/latex] — соответствующий билет продан, [latex]0[/latex] — не продан).
Определите общую выручку от спектакля.
Входные данные
Сначала записано число [latex]n[/latex], затем число [latex]m[/latex] ([latex]n[/latex], [latex]m \leqslant 500[/latex]). После задана матрица стоимостей билетов ([latex]n[/latex] строк по [latex]m[/latex] чисел, каждое из чисел от [latex]0[/latex] до [latex]10000[/latex]). Далее задана матрица проданных билетов — снова [latex]n[/latex] строк по [latex]m[/latex] чисел.
Выходные данные
Выведите общую выручку от продажи билетов.
Тесты
№ | Входные данные | Выходные данные |
---|---|---|
1 | 3 3 | 25 |
1 2 3 | ||
4 5 6 | ||
7 8 9 | ||
1 0 1 | ||
0 1 0 | ||
1 0 1 | ||
2 | 2 2 | 0 |
1 1 | ||
2 2 | ||
0 0 | ||
0 0 | ||
3 | 4 5 | 380 |
15 16 17 18 19 | ||
19 18 17 16 15 | ||
19 20 21 22 23 | ||
23 22 21 20 19 | ||
1 1 1 1 1 | ||
1 1 1 1 1 | ||
1 1 1 1 1 | ||
1 1 1 1 1 |
Код программы с использованием одномерных массивов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> using namespace std; int main() { int x [500*500]; int n, m; cin >> n >> m; int nm= n*m; for(int i = 1; i <= nm; i++){ cin >> x[i]; } int k; long long int v = 0; for(int i = 1; i <= nm; i++){ cin >> k; v+= k*x[i]; } cout << v << endl; return 0; } |
Решение задачи
Описываем целочисленный одномерный массив x [500*500] для хранения матрицы стоимостей билетов. Описываем целочисленные переменные [latex]n[/latex] и [latex]m[/latex] (количество строк и столбцов матрицы) и считываем их. Описываем целочисленную переменную [latex]nm[/latex] (количество мест в зале) и инициализируем ее произведением [latex]n \cdot m[/latex]. Цикл инициализирует [latex]nm[/latex] элементов массива [latex]x[/latex]. Описываем целочисленную переменную [latex]k[/latex], которая принимает значения [latex]0[/latex] или [latex]1[/latex] (билет не продан или продан), и целочисленную переменную [latex]v[/latex] — стоимость проданных билетов ([latex]v[/latex] имеет тип long long int, так как максимальное значение, которое она может принять, составляет [latex]500 \cdot 500 \cdot 10000=2500000000[/latex]). Цикл считывает значения [latex]k[/latex] и увеличивает [latex]v[/latex] на k*x[i].
Код программы с использованием многомерных массивов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> using namespace std; int x[500][500]; int main(){ int n, m, p; cin >> n >> m; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) cin >> x[i][j]; unsigned long long v = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> p; if (p) v += x[i][j]; } } cout << v; } |
Решение задачи
По условию заданы количество строк [latex]n[/latex] и количество столбцов [latex]m[/latex] матрицы стоимости театральных билетов ( [latex] n,m\leqslant 500[/latex], каждое из чисел от [latex]0[/latex] до [latex]10000[/latex] ). Описываем целочисленную матрицу x[500][500]. Объявляем целочисленные переменные [latex]n[/latex] и [latex]m[/latex] и вводим их значения с клавиатуры. Считываем матрицу x. Объявляем переменную unsigned long long v = 0 — стоимость проданных билетов. Целочисленная переменная [latex]p = 1[/latex], если билет на ( [latex]i,j[/latex] )-е место продан, и [latex]p = 0[/latex] — в противном случае. Во вложенных циклах считываем значение [latex]p[/latex] из матрицы проданных билетов. Проверяем [latex]p[/latex] на положительность и увеличиваем [latex]v[/latex] на стоимость билета на ( [latex]i,j[/latex] )-е место.
Ссылки
e-olymp
ideone (код с одномерными массивами)
ideone (код с многомерными массивами)
Для отправки комментария необходимо войти на сайт.