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

Сдать решение задачи 5-Интересные числа
Полный : 100
Ограничение времени: 1 с
Ограничение памяти: 512M
Ограничение размера стека: 64M
Задача 5: Интересные числа
На занятиях математического кружка Сережа узнал об интересных числах — это числа, которые имеют простые делители только 2, 3 и 5. Теперь он хочет узнать наибольшее интересное число, не превосходящее числа n.

Входные данные
Программа получает на вход целое число n (2 ≤ n ≤ 1017).

Обратите внимание, что значение n может быть больше, чем возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные числа (тип int64 в языке Pascal, тип long long в C и C++, тип long в Java и C#).

Выходные данные
Программа должна вывести одно целое число — максимальное интересное число, не превосходящее n.

Система оценки
Решения, правильно работающие при n ≤ 104, будут оцениваться в

Решения, правильно работающие при n ≤ 108, будут оцениваться в

Примеры
Ввод

Вывод

Пояснение

7

6

Первые интересные числа — это 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30,
Поэтому максимальное интересное число, не превосходящее 7 — это 6.

100

100

Число 100 разлагается на множители, как 100 = 22 × 52, поэтому число 100 само является интересным.

Показать ответ
Ответ:
Катер007
Катер007
31.01.2021 09:09

Какой оператор цикла желательно использовать, если известно число повторений тела цикла?

repeat <оператор1, …>until <условие>

while <условие>do <оператор>

for <параметр>:= <начальное значение>to<конечное значение> do<оператор>

2. Используется оператор for i:= -10 to 10 do…

После завершения выполнения тела цикла i = 10

3. Цикл в фрагменте программы

p:=1;

repeat

p:=p*0.1

until p>0.1;

будет исполнен:

1 раз

2 раза

бесконечное число раз

0 раз

3 раза

4. Цикл в фрагменте программы

a:=1;

b:=1;

while a+b<8 do

begin

a:=a+1; b:=b+2

end;

выполнится:

0 раз

3 раза

2 раза

1 раз

бесконечное число раз

5. Какой оператор цикла желательно использовать для записи алгоритмической конструкции, изображённой на схеме?

НЕТ СХЕМЫ. ОТВЕТИТЬ НА ВОПРОС НЕВОЗМОЖНО.

while <условие> do <оператор>

for <параметр>:= <начальное значение> to <конечное значение> do <оператор>

repeat <оператор1, …> until <условие>

6. Какой оператор цикла желательно использовать, если известно условие выхода из цикла?

repeat <оператор1, …> until <условие>

for <параметр>:= <начальное значение> to <конечное значение> do <оператор>

while <условие> do <оператор>

7. Определите, какое значение будет выведено на экран в результате выполнения приведенной ниже последовательности операторов:

a:=1; b:=1;

while a<=32 do a:=a*2; b:=b*a;  //Обратите внимание! Нет begin end.

write (b)

32

256

64

128

8. Используется оператор for i:= -5 to 9 do…

При первом выполнении тела цикла i = -5

9. Чему равно значение переменной s после выполнения следующего фрагмента программы

Фрагмента программы нет! Задание решить нельзя!

0,0(0 оценок)
Ответ:
marisa10
marisa10
09.05.2021 04:49
Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). Если в i-ой компоненте связности n_i вершин, то общее число рёбер будет суммой по всем компонентам связности:

\displaystyle \sum_{i=1}^K\frac{n_i(n_i-1)}2=\frac12\sum_{i=1}^K n_i^2-\frac12\sum_{i=1}^Kn_i=\frac12\sum_{i=1}^K n_i^2-\frac N2

Требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна N и ni - натуральные числа.

Если K = 1, то всё очевидно - ответ N(N - 1)/2. Пусть K > 1.

Предположим, n1 <= n2 <= ... <= nK - набор чисел, для которых достигается максимум, и n1 > 1. Уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в K-ую компоненту связности. Вычислим, как изменится сумма квадратов:
\Delta(\sum n_i^2)=(1^2+(n_K+n_1-1)^2)-(n_1^2+n_K^2)=2(n_1-1)(n_K-1)
Поскольку по предположению n1 > 1 (тогда и nK > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. Значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. Выкинем эту компоненту связности, останутся K - 1 компонента связности и N - 1 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.

Итак, должно выполняться
n_1=n_2=\cdots=n_{K-1}=1;\qquad n_K=N-K+1

Подставив в исходную формулу, получаем
\displaystyle\frac{(N-K)(N-K+1)}{2}

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