Столбцы
Дана таблица [latex]n × n[/latex], заполненная целыми числами. Петр Первый считает столбец хорошим, если тот содержит число [latex]x[/latex]. Требуется для каждого столбца выяснить, является ли тот хорошим.
Входные данные
В первой строке задано число [latex]x[/latex], не превышающее по модулю 2 [latex]\cdot[/latex] 109. Во второй строке задано число [latex]n \left(1 \leqslant n \leqslant 100\right)[/latex]. Каждая из следующих [latex]n[/latex] строк содержит [latex]n[/latex] целых чисел, не превышающих по модулю 2 [latex]\cdot[/latex] 109 — числа в ячейках таблицы.
Выходные данные
Для каждого столбца в отдельной строке выведите YES, если в нем есть число [latex]x[/latex], и NO в противном случае.
Тесты
# | ВХОДНЫЕ ДАННЫЕ | ВЫХОДНЫЕ ДАННЫЕ |
---|---|---|
1 | 1 2 0 1 0 0 |
NO YES |
2 | 23 3 23 0 23 21 12 23 11 13 23 |
YES NO YES |
3 | 7 1 0 |
NO |
4 | 13 3 13 33 75 23 45 31 13 13 13 |
YES YES YES |
Код
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 |
#include <iostream> using namespace std; int arr[101]; int main() { long long x, c; cin >> x; int n, i = 0; cin >> n; while (cin >> c) { if (c == x) { arr[i % n]++; } i++; } for (int i = 0; i < n; i++) { if (arr[i] > 0) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; } |
Решение
Для решения этой задачи заведём массив на [latex]n[/latex] элементов, в котором каждый элемент будет счётчиком соответствующего столбца. В цикле будем смотреть все элементы и, если нам встретится элемент [latex]x[/latex], увеличим соответствующий счётчик. Затем в другом цикле смотрим счётчик каждого столбца, если он больше нуля, то выводим YES, иначе — NO.
Запустить код (ideone) можно здесь
Задача на E-olymp
Звездочка используется для обозначения умножения в программировании. Но ни в математике, ни при задании размеров матрицы ее не используют.
Решение совершенно не эффективно. Решите задачу, за один просмотр массива.
Спасибо, исправил.