Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2015, 19:49   #1
Перегон
 
Регистрация: 12.04.2015
Сообщений: 3
По умолчанию Обработка очень больших чисел

Требуется решить задачу по олимпиадному программированию. как решать знаю. Единственная проблема - нужно проверить получаемое число на остаток от деления. Данную операцию получается проделать лишь с числами целочисленного типа, а применить ее надо, к примеру, к числу 13^13. Использование типов Integer и Cardinal не подходит. Число слишком велико. Тип Extended обрабатывает это число правильно, но оператор mod к нему неприменим. Что посоветуете?
Перегон вне форума Ответить с цитированием
Старый 12.04.2015, 20:02   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var x,y: Int64;

  x:=Round(IntPower(13,13));
  y:=x mod 1234567890123;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2015, 20:16   #3
Перегон
 
Регистрация: 12.04.2015
Сообщений: 3
По умолчанию

Эх, если бы, число 13^13 получается из обработки данных входного файла. там может быть и намного большее число.
Перегон вне форума Ответить с цитированием
Старый 12.04.2015, 20:20   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
может быть и намного большее число
На сколько на много? int64 где-то 18 знаков, уточни. Если больше то и Extended не помощник. Тогда длинная целочисленная арифметика и аналог деления в столбик для нахождения остатка
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2015, 20:47   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Единственная проблема - нужно проверить получаемое число на остаток от деления.
Тут зависит больше не от числа, а от того от чего ищется остаток от деления. Ну вот для 2-ки например, не нужно знать все число. Пусть у нас есть число в миллиард разрядов. Нам нужно узнать делится ли оно на 2. Как будем поступать? Возьмем последний разряд и проверим, делится ли он на 2. И все оставшиеся разряды роли не играют. Поэтому нужно знать сколько число разрядов в том числе на которое нужно делить. Затем хорошенько подумать и взять не все разряды от исходного числа, а только столько сколько нужно для операции.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.04.2015, 03:10   #6
Перегон
 
Регистрация: 12.04.2015
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Нам нужно узнать делится ли оно на 2.
Вместо двойки может быть любое натуральное до 101, так что пара последних разрядов не спасут
Перегон вне форума Ответить с цитированием
Старый 13.04.2015, 03:41   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Похоже, 101 не случайно - Признаки делимости.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.04.2015, 05:48   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Вместо двойки может быть любое натуральное до 101, так что пара последних разрядов не спасут
Я дал Вам всю информацию, достаточную для решения. BDA фактически дал Вам само решение.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано (random) 50 чисел. Вычислить среднее арифметическое чисел больших полусуммы первых двух. Olzhakesh Общие вопросы по Java, Java SE, Kotlin 5 24.12.2014 19:45
Дана непустая последовательность целых чисел. Найти: Сумму чисел, больших числа x и количество всех чётных чисел maksim97maksim Паскаль, Turbo Pascal, PascalABC.NET 1 09.04.2014 13:59
сложение больших чисел SacReD_89 Общие вопросы C/C++ 21 25.04.2010 16:42
С# Сложение больших чисел SL1CK Помощь студентам 4 23.11.2009 21:07
Нахождение остатка от деления очень больших чисел Pavel_Ine Общие вопросы C/C++ 6 22.11.2009 20:49