Найти максимум числового выражения25.09.2016, 14:03. Показов 1609. Ответов 33
Метки нет (Все метки)
Задано числовое выражение
(sin1 + ... + sin(k)) * (sin(k+1) + ... + sin(n)) в двух скобках проставлены суммы синусов от чисел натурального ряда. Всего чисел 100 и они расположены в порядке возрастания от 1 до 100. Однако сколько этих чисел в каждой скобке неизвестно. может 1, а может 99 Надо вычислить максимум независимо от N. 1 < N <=100 Вопросы 1. Есть ли иное решение? 2. Можно ли улучшить мою программу? 3. Кажется здесь можно использовать рекурсию? например по количеству синусов во второй скобке?
0
|
||||||
| 25.09.2016, 14:03 | |
|
Ответы с готовыми решениями:
33
|
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
||||||
| 25.09.2016, 16:32 | ||||||
|
Как-то у меня совсем не так получилось. Или я чего-то не так понял?
0
|
||||||
| 25.09.2016, 16:49 [ТС] | |
|
кот Бегемот
Вы не расстраивайтесь - просто неточно поняли условие задачи. я повторю еще раз более четко Мы составляем выражение (пример) 1) в первой скобке (sin1+sin2+sin3) [число слагаемых от 1 до 99] 2) вторая скобка (sin4 + sin5) [последним может быть число sin100] 3) обе скобки перемножаются и получается некоторое число. 4) составляется другая пара скобок и вновь перемножается и вновь получается некоторое число 5) и следующая пара скобок. 6) Из всех полученных чисел надо найти максимум На что обратить внимание: 1. первая скобка всегда содержит sin1 2. если первая скобка заканчивается числом sin(k), то вторая скобка начинается с числа sin(k+1) 3. как я сказал, общее число чисел НЕ ПРЕВЫШАЕТ 100 Может быть меньше (например 2) 4. числа соблюдают строгий порядок. То есть если есть например sin7 и sin9, то должен быть и sin8 (между ними) пример (...+ sin7 + sin8 + sin9 +...) или другой пример (...+ sin7) * (sin8 + sin9 + ...)
0
|
|
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
||||||
| 25.09.2016, 19:32 | ||||||
Сообщение было отмечено echs как решение
Решение
Ну, просто добавим перебор всех вариантов. Работает гораздо быстрее вашей.
0
|
||||||
| 25.09.2016, 20:26 [ТС] | |
|
кот Бегемот
Вы меня извините, но у вас самый последний цикл противоречит стоящему перед ним циклу. Иными словами, в последнем цикле вычитается то, что перед ним только что складывалось. Может опечатка? СРАВНИТЕ СТРОКИ 6 и 9. - парадокс.
0
|
|
| 25.09.2016, 20:37 | ||||||
Сообщение было отмечено echs как решение
Решение
У меня так получилось, почти как в предыдущем посте
0
|
||||||
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
||
| 25.09.2016, 20:51 | ||
|
А почему вы все так уверены, что мах будет положительным и не инициализируете мах? За это на ЕГЭ 3 балла снимают, специалисты, блин... m-ch, использование массива там, где он не обязателен считается нерациональным способом решения Да и ответ у Вас подозрительный... Не совпадает с двумя предыдущими
0
|
||
| 25.09.2016, 20:59 | |||
Сообщение было отмечено echs как решение
РешениеКстати, где гарантия, что max будет больше -100? Если важна скорость, то использование массива оправдано, т.к. производится меньше вычислений.
0
|
|||
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
||
| 25.09.2016, 21:19 | ||
|
m-ch, я не утверждаю, что моя программа оптимальна. Даже навскидку видно, что каждый раз сумму синусов вычислять не обязательно. можно просто добавлять к сумме по очередному синусу - я не писал оптимальную программу, я добавил цикл к имеющейся, рассчитанной на 100 чисел. В любом случае модернизированная программа займёт в памяти места меньше, чем Ваша.
Добавлено через 3 минуты
0
|
||
| 25.09.2016, 23:11 | |||||||||||
Сообщение было отмечено echs как решение
Решение
Проверил для n=10000
Код с массивом считает в 2 раза быстрее Код на VBA Кликните здесь для просмотра всего текста
Без массива: 0,958589639861934 - 4,25 С массивом: 0,958589639861934 - 2,1875
0
|
|||||||||||
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
|||||||
| 26.09.2016, 08:41 | |||||||
1
|
|||||||
| 26.09.2016, 09:26 | |||||||||||||||||
|
Ваш код:
163,1289 сек 92,37891 сек 20,58984 сек
0
|
|||||||||||||||||
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
||
| 26.09.2016, 09:41 | ||
|
Я вот не пойму: зачем выдумывать то, чего нет в задаче? Есть условие "не более 100 чисел". Ваша программа неэффективна по памяти. А скорость на 100 элементах не имеет никакого значения, поскольку измеряется долями секунд. А то, что пишете Вы (про n=5000) - это уже Ваша личная задача.
0
|
||
| 26.09.2016, 10:22 | ||||
|
Основные торможением времени работы программы является вычисление синусов, в Вашем коде при n=100 функция синус вычисляется 10200 раз, в моем (без массива) - 5050 раз (в два раза меньше) Несколько раз запустил код в QBasic при n=100, Ваш алгоритм дает значение 0,11 сек (иногда 0,05), мой без массива - стабильно 0,05 секунды, с массивом - 0 сек. В более сложных программах нужно находить баланс между производительностью и объемом выделяемой памяти Почему не задать начальный максимум равным -1, так как произведение двух синусов не может быть меньше -1 А исходя из задачи первое вычисление будет sin(1)*sin(2), соответственно нижняя граница максимума - не менее -1 (тоже оценил математически, как и Вы значение -100)
0
|
||||
|
Платежеспособный зверь
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
|
|
| 26.09.2016, 10:59 | |
|
Не хочу углубляться в дебри уже просто потому, что я не ставил перед собой задачу написать оптимальную программу, я лишь сказал то, что сказал: при прочих равных программа, к примеру, на ЕГЭ, оценивается по эффективности затрат памяти и программа без массива поэтому считается оптимальнее программы с массивом. Что до вычислений синуса, я уже говорил, что не пытался оптимизировать свою программу, не сомневаюсь, что можно это сделать.
Максимум я не вычислял нигде, если не считать умножения 100 на 1, я просто оценил то, что сумма 100 синусов не сможет выйти за пределы -100. А вот насчет того, что произведение не будет меньше -1, тут неточность, ибо мы перемножаем не синусы, а их суммы, а сумма может и вылезти за -1. И sin(1)*sin(2) - это лажа.
0
|
|
| 26.09.2016, 11:22 [ТС] | |
|
кот Бегемот
Вы правы в том, что сумма синусов может быть любым числом, в том числе и отрицательным. Но максимум (а ищется именно он) никогда не будет отрицательным. Расчеты это подтверждают. Ибо все суммы никогда не будут разом или как то иначе отрицательны.
0
|
|
| 26.09.2016, 11:29 | |
|
0
|
|
| 26.09.2016, 11:29 | |
|
Помогаю со студенческими работами здесь
20
Найти минимум и максимум в массивах чисел и вычислить значение выражения Найти максимум в диагонали матрицы и перевернуть строки, в которых есть этот максимум Разбор числового выражения Вычислить значение числового выражения Найти максимум из девяти чисел(максимум из трех чисел(максимум из двух чисел) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|