1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| Tauka |
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Репутация: 0 |
Есть число N (N<=5000000)
Нужно определить минимальное количество чисел, сумма квадратов каких дает число N. Например, число 61 можна представить в виде суммы квадратов двух чисел 6^2+5^2 Спасибо за внимание. :о) -------------------- С уважением,
Таука. |
![]() ![]() |
| Михаил Густокашин |
Сообщение
#2
|
|
Новичок ![]() Группа: Пользователи Сообщений: 22 Пол: Мужской Репутация: 0 |
вот правильное решение:
Эта задача решается с помощью динамического программирования. Сначала проверим, не является ли число полным квадратом. Если так, то сразу выводим "1" и заканчиваем. Если же не является, то придется потрудиться. Заведем массив размером в 60000 элементов - в нем мы будем хранить количество участков для каждой площади. Пройдем его с 1 до N, если текущее число (i) - квадрат целого числа, то в соответствующий элемент массива записываем 1 и переходим к следующему. Если же это не так, то тут понадобиться еще один цикл (j) от 1, до тех пор, пока разность между i и j2 не станет меньше 1. Итак, мы можем узнать, сколько участков необходимо, чтобы скупить территорию i - j2; для того, чтобы скупить территорию площадью i, необходимо на один участок больше (этот участок со стороной j). Среди всех возможных j выберем минимальное количество участков для площади i и перейдем к следующему i. Этим мы полностью рассматриваем все варианты и выбираем наилучший (в этом несложно убедиться). -------------------- учим школьников программированию (и математике до кучи): информация здесь: Webpage
|
Tauka Минимальное количество чисел 1.03.2005 1:28
APAL Похожие задачи уже рассматривались.
В чем конкретн… 1.03.2005 1:44
virt на словах ::
count:=0;
1: находишь максимальный по… 1.03.2005 2:52
Михаил Густокашин решение Virt'а неправильное. например, 12 оно … 1.03.2005 16:19
virt понял ошибку ,исправлю.
насколько представляю надо… 1.03.2005 20:00
Tauka Вобще то пока проблема каким образом определять эт… 1.03.2005 22:35
virt program minimum_kvadrats;
var a:array[1..3… 2.03.2005 21:25![]() ![]() |
|
Текстовая версия | 7.11.2025 7:31 |