Дано число N, затем элементы массива — N строк с именами. Затем записана ещё одна строка с именем. Сколько раз встречается эта строка в массиве?
Ответ нейросети
12 марта 2026 09:44
Задача: дано число N, далее N строк — имена, затем ещё одна строка со значением name_to_find. Нужно посчитать, сколько раз встречается name_to_find в массиве имен.
Пошаговое решение (пояснение по шагам)
- Прочитать N — число строк в массиве.
- Прочитать N строк и сохранить их в массив (например, names).
- Прочитать целевую строку target — имя, которое ищем.
- Пройтись по всем элементам массива и считать тех, которые равны target.
- Вывести полученное количество.
Дополнительно
- По умолчанию сравнение учитывает регистр (без преобразований). Если нужно игнорировать регистр, можно привести и элементы массива, и target к одному регистру (например, к нижнему) и сравнивать.
- Время выполнения: O(N). Потребная память: O(N) для хранения массива строк (если хотите экономить память, можно считать на этапе чтения, но здесь target известен только после прочтения N строк, поэтому проще хранить массив).
Пример
- Ввод: 6 Alex Maria Ivan Alex Petr Alex Alex
- Вывод: 3 (имя target = Alex встречается 3 раза)
Псевдокод read N names = пустой список for i = 1..N: read s append s к names read target count = 0 for each x в names: if x == target: count += 1 print count
Пример реализации на Python (ясный и компактный) def count_occurrences(): N = int(input()) names = [input().strip() for _ in range(N)] target = input().strip() count = sum(1 for x in names if x == target) print(count)
Если нужно привести к однообразному регистру (чтобы считать без учёта регистра): def count_occurrences_case_insensitive(): N = int(input()) names = [input().strip().lower() for _ in range(N)] target = input().strip().lower() count = sum(1 for x in names if x == target) print(count)
Пример реализации на C++ #include <bits/stdc++.h> using namespace std;
int main() { ios::sync_with_stdio(false); cin.tie(nullptr);
int N;
if (!(cin >> N)) return 0;
string s;
vector<string> names;
names.reserve(N);
string dummy;
getline(cin, dummy); // пропустим остаток строки после N
for (int i = 0; i < N; ++i) {
getline(cin, s);
names.push_back(s);
}
string target;
getline(cin, target);
int count = 0;
for (const auto& x : names) {
if (x == target) ++count;
}
cout << count << "\n";
return 0;
}
Если хотите, могу адаптировать решение под конкретный язык программирования или формат входных данных (например, если имена могут содержать пробелы или если ввод идёт через файл).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



