21.07.2018, 15:00 [+3 UTC]
в нашей команде: 2 884 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
20.07.2018, 12:27

Последний вопрос:
20.07.2018, 13:35

Последний ответ:
19.07.2018, 14:46

Последняя рассылка:
21.07.2018, 00:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
02.12.2009, 22:41 »
Иванов Виктор Олегович
Огромное спасибо! Это как раз то, что мне надо. Все работает. Благодарю Вас! [вопрос № 174752, ответ № 257214]
27.04.2011, 22:10 »
Ameno
Быстро, что было важно и очень четко! [вопрос № 182962, ответ № 266856]
27.08.2009, 15:23 »
nikos
Отлично! Раньше, на других форумах, получал общие рассуждения, а здесь цифры!

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 291
mklokov
Статус: 6-й класс
Рейтинг: 23
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 3

Перейти к консультации №:
 

Консультация онлайн # 136673
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Квашнин Олег Петрович
Отправлена: 13.05.2008, 18:02
Поступило ответов: 2

Есть такая тема: возвести 3 в 512-тую степень и напечатать 125 цифру(слева) получившегося числа. Я как только не бился, longing вмещает 2000000 чисел, а там больше. Догадываюсь, что массивом, но как? Помогите!

Состояние: Консультация закрыта

Ответ # 223362 от Gh0stik

Здравствуйте, Квашнин Олег Петрович!

Конечно больше ... ;).
Данная задача решается с использованием массива, в котором число хранится поразрядно - в каждой ячейке один разряд числа. Сам алгоритм возведения в степень очень похож на умножение в столбик, только с соответствующими коррективами.

Вот решение:
const n=3; power=512;
var a:array [1..500] of integer;
    i,j,x,mem:integer;
    s:string;
begin
  a[500]:=n; mem:=0; {число храним в массиве, в первый разряд заносим само число}
  for i:=2 to power do {повторяем цикл столько раз в зависимости от степени}
     for j:=500 downto 1 do  {заполняем число поразрядно}
     begin x:=a[j]*n; {умножаем текущий разряд на 3}
        a[j]:=(x+mem) mod 10; {записываем в ячейку только одну цифру - текущий разряд}
        mem:=(x+mem) div 10; {старшие разряды запоминаем}
     end;
  j:=1; while a[j]=0 do inc(j); {поскольку массив мы заполняли справа налево, то необходимо найти позицию первой цифры числа в массиве}
  writeln(a[j+125-1]); {выводим на экран 125-ю цифру слева}
  write('(',n,'^',power,')='); for i:=j to 500 do write(a[i]); {для полноты выведем все число целиком}
  readln;
end.


А вот результат:
3
(3^512)=193233498322889151054540687220195810554014657616033285501845376289024667
46415537000017939429786029354390082329294586119505153509101332940884098040478728
63954256055013372739948277806232240737233812104339966824227659179150465898588299
5272436541441


Good Luck!


Консультировал: Gh0stik
Дата отправки: 13.05.2008, 19:35

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 223367 от Denisss


Здравствуйте, Квашнин Олег Петрович!

Пример находится в приложении. Функции для работы с длинными числами взяты отсюда: Длинная арифметика.
Алгоритм вычисления степени взят там же.
Перемножение двух длинных чисел реализовано самостоятельно.

PS
У меня 125-я цифра слева получилась равная трем.

Удачи!

Приложение:


Консультировал: Denisss
Дата отправки: 13.05.2008, 20:06

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14113 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018