IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Найти число, состоящее из 1 и 2
сообщение
Сообщение #1


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

Репутация: -  3  +


Надо найти число делящееся на 2 в степени 100 и состоящее только из единиц и двоек.
Пока что нашел только 2 в степени 100 которое равно 1267650600228229401496703205376 smile.gif ... Надо найти просто это число. У кого какие идеи?


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
сообщение
Сообщение #2


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


неправильно понял условие...

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Метод индукции. Вот тут объяснение:
http://www.sciteclibrary.ru/cgi-bin/yabb2/...um=1062572919/2
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


На уровне идеи:
Вводим систему считсления по основанию 2, в которой в качестве цифр используем символы "1" и "2".
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

Репутация: -  3  +


volvo, большое спасибо за подсказку и ссылку good.gif . Я уже примерно месяц стараюсь решить эту задачу, но никак не получаеться mega_chok.gif . Мне не удается реализовать рекурсию wacko.gif . Могли бы вы помочь мне в этом деле? заранее большое спасибо. smile.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну, если просто найти число...

Я проверял на FPC (но, в принципе, модуль не содержит ничего криминального и для TP, насколько я вижу, должно работать и там), с использованием модуля HugeInts, описанного в DRKB -> Математика, алгоритмы -> Арифметика, системы счисления, комплексные числа -> Очень большие числа -> Огромные числа:

uses HugeInts;

var
two, n, divider, r: hugeint;
s, s_div: string;
i: integer;

begin
integer2hugeint(2, two);
n := two; divider := two;
for i := 2 to 100 do begin { работаем до 2^100 }

hugeint_mul(divider, two, divider); { следующая степень двойки }
hugeint_mod(n, divider, R); { R - остаток от деления N на след. степень 2 }

hugeint2string(n, s); { Для удобства преобразуем в строку }
if hugeint_zero® then s := '2' + s { Делится? Значит, добавляем 2 спереди }
else s := '1' + s; { Не делится? Добавляем 1 }
string2hugeint(s, n); { Конвертируем назад в HugeInt }

end;

HugeInt2String(divider, s_div);
writeln(s_div);
HugeInt2String(n, s);
writeln(s);
end.

А теперь проверяем полученный результат:
uses HugeInts;
var n, R, divider: hugeint;
begin
string2hugeint('1267650600228229401496703205376', divider);
string2hugeint(
'121121121122112121121112112212221121222111212211112'+
'2212112212121112121121122111112111211111212122112', n);
hugeint_mod(n, divider, R);

if hugeint_zero® then writeln('ok')
else writeln('something wrong!!!');
end.


Это сама идея. Работает довольно медленно, потому что все время эти конвертации... Да, и еще. Запускать программу надо с режимом {$R-}, и заменив там в исходнике модуля HugeIntSize на что-нибудь более серьезное, чем 8 по умолчанию. Я взял HugeIntSize = 1000, чтоб гарантированно избежать переполнения... Но уж никак не меньше 100, поскольку в результате получаем 100-значное число...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 13:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name