Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 1
Регистрация: 05.08.2017
Сообщений: 61
1

Как во Free Pascal записать переменную в таком типе 10 в степени 10000

06.10.2017, 14:59. Показов 894. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно вот ссылка на задачу с условием: Ссылка удалена.
Использовал тип qword и uint64, решение прошло на 40%.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2017, 14:59
Ответы с готовыми решениями:

Как записать уравнение в Free Pascal
Как записать данное уравнение в Free Pascal.

Как правильно записать в Free Pascal математическое выражение ln^2(x)
Как правильно записать в Free Pascal математическое выражение {\ln}^{2}\left(x \right)? Вариант 1:...

Pascal записать sin x в степени
Доброго времени суток! Помогите пожалуйста сделать следующую задачку на Pascal: y=sin...

Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET - в чем разница?
Всем привет, решил изучать Паскаль, но на форуме увидел 4 его версии - Turbo Pascal, Pascal ABC,...

8
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.10.2017, 15:36 2
Капинус, Я тебе писал что текст задания нужно напечатать в теме?
0
438 / 367 / 132
Регистрация: 09.09.2011
Сообщений: 1,334
07.10.2017, 13:50 3
Для целых чисел таких типов (встроенных) нет. Надо писать самому, либо длинную арифметику на массивах, либо на тех же массивах поддержку числе по основанию больше 10.

Судя по вопросу, это тема еще довольно продвинута для Вас. Если условия позволяют - используйте python или java там длинная арифметика в комплекте. Но скорее всего можно как-то оптимизировать алгоритм и не применять длинную арифметику (если задача учебная или олимпиадная).
0
2 / 2 / 1
Регистрация: 05.08.2017
Сообщений: 61
09.10.2017, 12:13  [ТС] 4
Собственно вот и задача:

Рисунки на листочке в клеточку

У Васи есть листочек в клеточку, состоящий из N клеток по горизонтали и M клеток по вертикали, причем линии клеток листочка на краю также видны. Сколько различных прямоугольников может на этом листочке нарисовать Вася, если рисовать он умеет только по линиям?

Входные данные

В единственной строке через пробел находятся два числа M и N. Все входные данные натуральные числа, не превышающие 1010000.

Выходные данные

Единственное число - искомое количество прямоугольников.

Лимит времени 2 секунды

Лимит использования памяти 64 MiB

Входные данные
3 2
Выходные данные
18
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.10.2017, 13:06 5
натуральные числа, не превышающие 1010000.
Наверное в условии так?
0
2 / 2 / 1
Регистрация: 05.08.2017
Сообщений: 61
09.10.2017, 13:13  [ТС] 6
да. спасибо за поправку
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
15.10.2017, 02:41 7
Хранить длинные числа не проблема. Вот только как с такими жуткими ограничениями задачу решать?
Если бы числа были маленькие, то скорее всего что-то такое прошло бы
Pascal
1
2
3
for i := 1 to m do
   for j := 1 to n do
      ans += (m - i + 1) * (n - j + 1)
Капинус, слишком крутую задачу вы взяли для себя.

Добавлено через 8 минут
Хотя на самом деле все оказывается просто. Достаточно вывести формулу для ответа, выходит m * (m+1) / 2 * n * (n+1) / 2 и остается только написать длинную арифметику ну или воспользоваться готовой(если есть).
0
438 / 367 / 132
Регистрация: 09.09.2011
Сообщений: 1,334
17.10.2017, 00:10 8
Новичок, как Вы к такой формуле пришли?
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
17.10.2017, 00:56 9
Kitayets, возьмем код выше.
Pascal
1
2
3
for i := 1 to m do
   for j := 1 to n do
      ans += (m - i + 1) * (n - j + 1)
Представим что будет при i = константа, (m - i + 1) константа, а вот n - j + 1 уже каждый раз меняется.
Вынесем (m - i + 1) за скобки, получим (m - i + 1)((n - 1 + 1) + (n - 2 + 1) + ... + (n - n + 1)) = (m - i + 1)(n + n - 1 + ... + 1) = (m-i+1) * n * (n+1) / 2
Но это формула для одной итерации i, а у нас i меняется от 1 до m.
Меняя i получаем m * n * (n+1)/2 + (m-1) * n * (n+1)/2 + ... + 1 * n * (n+1)/2 = (m + m-1 + ... + 1) * n * (n+1) / 2 = m * (m+1) / 2 * n * (n+1) / 2
1
17.10.2017, 00:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2017, 00:56
Помогаю со студенческими работами здесь

Как правильно записать в таком случае?
$('.wrappZametka').hover(function() { ...

Нужно записать лог bat-ника в переменную через программу в Pascal
Добрый день, появилась задача запустить bat файл и записать логи из него, конкретно результат...

Нужно записать лог bat-ника в переменную через программу в Pascal
Добрый день, появилась задача запустить bat файл и записать логи из него, конкретно результат...

В 10000 степени
Как записать число в 10000 степени?

Как запустить Free Pascal
Здравствуйте! Поставил себе free pascal и не знаю теперь, точнее сказать не нахожу того .exe через...

Как работает Free Pascal в Windows 7
у меня стоит vista ,хочу поставить window 7 как в window 7 будет работать free pascal может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru