Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очень простая задача, :) 
:(
    Опции темы
Dr.Death
  Дата 23.11.2004, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 950
Регистрация: 15.7.2003
Где: Волгоград

Репутация: нет
Всего: 1



Дано натуральное число Х. Найдите такое максимальное целое число, квадрат которого не превышает Х.
Входные данные:
Число Х(1<=Х<=10^1000)
Выходные данные
Число, удовлетворяющее условию
Пример
Вх. данные|Выходные
16 4

Значит не знаю только как представить себе число 10^1000, такого типа данных помойму вообще нет, а длинной арифметикой очень долго. Знаю, что вроде легко решается, ну а как? smile
ограничения во времени 0,3с


--------------------
Жизнь коротка, чтобы быть в ней слабым.© Арнольд Шварцнеггер
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 23.11.2004, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Код

var
b:boolean;
x:integer;
i:longint;
begin
readln(x);
b:=true;
i:=1;
while b and (i < Max_LongInt{сам заполнишь}) do
 begin
  b:=sqr(i) < x;
  if b
   then
    inc(i);
 end;
if b
 then
  if i = MaxLongInt
   then
    writeln('Число очень большое!!!')
   else
    writeln('Числа нет') {хотя это не выполнится...}
 else
  writeln(i);
readln;
end.

Вот-с....
Добавлено @ 19:20
А если подумав....
Код

var
x:extended;
begin
readln(x);
writeln(Trunc(sqrt(x)));
readln;
end.

PM   Вверх
dm9
Дата 25.11.2004, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



Pakshin A. S., а если значащих цифр больше 20?

Возводим 111111111111111111111111111 в квадрат, полученное число скармливаем твоей программе.

Она его урезает до 20 цифр (ну или сколько там) и выдаёт ответ:
111111111111111111111111110 или 111111111111111111111111109.

Нет, без длинной арифметики никуда, имхо...
Добавлено @ 22:18
PS calc.exe именно так и урезал - до 111111111111111111111111109...
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 25.11.2004, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Нууу...
Паскаль же не принимает большие числа...
PM   Вверх
dm9
Дата 25.11.2004, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



В данной постановке я бы посчитал, что задача нерешаема (с ограниченим времени) smile
Добавлено @ 22:27
В худшем случае придётся придётся перемножить около 1600 чисел (500/lg(2)) с 500 знаками. Столько же операций сравнения. Сколько это по времени? smile
Ну, это если использовать что-то типа деления отрезка пополам smile
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 25.11.2004, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



А как сохранить примерно вот такое число, которое должно быть введено (Х):
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - 1
Добавлено @ 22:40
Упс...
Добавлено @ 22:41
Это же сколько пямять выделить надо?
PM   Вверх
Pakshin A. S.
Дата 25.11.2004, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



А что это мы с большими работам... давайте перейдем к бесконечно малым... Т. Е. будем работать с 1/х, где х - введённое с клавы число (надо придумать, как приобразовывать).
Тогда ответ будет таким: хнаменатель дроби 1/trunc(sqrt(x));
Теперь надо будет только реализовать... smile
PM   Вверх
Pakshin A. S.
Дата 25.11.2004, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Вот... кое-что...
Код

var
c:char;
i:integer;
x:extended;
begin
i:=10;
read(c);
x:=1/(ord(c) - ord('0'));
read(c);
while c <> #13 do
 begin
  x:=1/((1/x)*i + (ord(c) - ord('0')));
  read(c);
 end;
writeln((sqrt(1/x)):20:1);
readln;
readln;
end.

Может и не верно... простите...
PM   Вверх
dm9
Дата 25.11.2004, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



>Это же сколько пямять выделить надо?

String[1000]. Много? smile

Цитата(Pakshin @ 25.11.2004, 22:54)
А что это мы с большими работам... давайте перейдем к бесконечно малым


Та же фигня, разрядности не хватит...
PM MAIL ICQ   Вверх
cardinal
Дата 26.11.2004, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Dr @ 23.11.2004, 18:03)
Входные данные

Вопрос: в каком виде они даны?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Dr.Death
Дата 26.11.2004, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 950
Регистрация: 15.7.2003
Где: Волгоград

Репутация: нет
Всего: 1



Цитата(cardinal @ 26.11.2004, 00:45)
Вопрос: в каком виде они даны?

Ну как в каком?
Входные:16
Выходные:4
Там же все написано в начале - Число Х(1<=Х<=10^1000)


--------------------
Жизнь коротка, чтобы быть в ней слабым.© Арнольд Шварцнеггер
PM MAIL WWW ICQ   Вверх
cardinal
Дата 26.11.2004, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Dr @ 26.11.2004, 17:12)
Ну как в каком?
Входные:16
Выходные:4

Это и слону понятно, я имел в виду как они передаются процедуре, в виде массива или строки, как такое число передать функции? Тут идет речь о BigNumbers или нет?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Dr.Death
Дата 26.11.2004, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 950
Регистрация: 15.7.2003
Где: Волгоград

Репутация: нет
Всего: 1



cardinal
Вообще по идее нам один чел говорил, который проверял задания, что он ее решит без BigNumbers. Насчет ввода я не знаю smile . По идее должно просто в переменную, а вот как?


--------------------
Жизнь коротка, чтобы быть в ней слабым.© Арнольд Шварцнеггер
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 26.11.2004, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



А может с памятью работать напрямую...
Не знаю о чем только что сказал... но....
PM   Вверх
dm9
Дата 26.11.2004, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



Dr.Death, спроси этого человека потом, как он это решил smile
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0722 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.