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

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

:: консультации

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

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

:: правила

:: новости

:: участники

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

:: форум

:: блоги

:: поиск

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

:: наш журнал

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

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

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

:: поддержка

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

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
15.12.2017, 13:41

Последний вопрос:
15.12.2017, 14:39

Последний ответ:
15.12.2017, 06:51

Последняя рассылка:
15.12.2017, 14:15

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

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

Наша кнопка:

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

Отзывы о нас:
13.09.2011, 21:54 »
Ankden
Спасибо за консультацию! Успокоили,буду ждать [вопрос № 184017, ответ № 268217]
31.03.2016, 08:05 »
ne.kot
Уважаемый эксперт, весьма благодарен за своевременный и исчерпывающий ответ. [вопрос № 189040, ответ № 273547]

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

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

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

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

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 434
mklokov
Статус: 6-й класс
Рейтинг: 42
Вадим Исаев ака sir Henry
Статус: Старший модератор
Рейтинг: 41

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

Консультация онлайн # 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.14117 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн