Есть ответ 👍

Дан массив a из n целых чисел. требуется определить, является ли сумма квадратов всех его элементов пятизначным числом. формат входных данных на первой строке входного файла записано натуральное число n (n≤100) — число элементов в массиве. на следующей строке через пробел записаны целые числа ai (∣ai∣≤10^3) — элементы массива. формат выходных данных требуется вывести «yes», если сумма квадратов всех элементов массива является пятизначным числом, и «no» в противном случае. примерывходные данные 3 100 -200 150 3 6 12 -10 выходные данные "yes" "no" c++ help

150
332
Посмотреть ответы 1

Ответы на вопрос:

Djeka11
4,5(59 оценок)

Имеет смысл воспользоваться методом "дихотомии" (деления пополам). если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере? поэтому принимаем такое решение. мы делим список учеников на два части  (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. затем задаем вопрос: загаданный ученик находится в первой кучке? по результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. процесс повторяем пока не останется одна карточка. аналогично поступаем с датами рождения. тогда количество вопросов определится, как степень числа 2, число, не меньшее количества учеников (дней рождения). 2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов. 2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов. в сумме потребуется задать не более 9+10 = 19 вопросов. конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.

Популярно: Информатика