В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
Malishka9209
Malishka9209
21.12.2022 10:22 •  Информатика

Профессор андрей сергеевич ведет урок логики. однажды, он записал следующие выражения на доске:

ровно a1 из этих выражений верны.
ровно a2 из этих выражений верны.
ровно a3 из этих выражений верны.

ровно an из этих выражений верны.
андрей сергеевич спросил класс: сколько из этих утверждений верны? классу, найдите максимальное количество утверждений, которое может быть верно. если правильного ответа не существует, выведите -1.

входные данные
первая строка содержит число n (1 ≤ n ≤ 50) — количество утверждений. следующая строка содержит n чисел ai (0 ≤ ai ≤ n) — числа в утверждениях андрея сергеевича.

выходные данные
выведите одно число — максимальное количество верных утверждений на доске.
на языке с++ и только
100

Показать ответ
Ответ:
serbakovasvetas
serbakovasvetas
10.10.2020 11:12

Полагаю ответ кроется в нахождении элемента в этом списке, который и повторяется ровно столько количество раз, скольки и равен индекс данного выражения. Т.е. если у нас 5 утверждений, то утверждение с "1" будет правдиво для себя же. Если у нас будет 2 утверждения с двойками, то они могут ссылаться друг на друга соответственно.

Если будет четыре "4", то они также могут ссылаться друг на друга, что они правдивы и тогда можно заверить, что они верны.

Программа (C++):

#include <iostream>

#include <map>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian");

int result=0;

int n, elem;

list<int> list_elems;

map<int, int> elems_map;

   cout << "Введите N\n";

cin >> n;

cout << "Введите числа в утверждениях\n";

for (int i = 0; i < n; i++) {

 cin >> elem;

 list_elems.push_back(elem);

}

for (auto const& f : list_elems)

 elems_map[f]++;

for (auto const& b : elems_map) {

 if (b.first == b.second && result < b.first)

  result = b.first;

}

if (result == 0)

 cout << -1;

else

 cout << result << " правдивы";

return 0;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота