Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение, сверхдлинных чисел 
V
    Опции темы
rash
Дата 3.10.2006, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Требуется сравнить два n-значных числа, где n может быть  от 100 до 1000.
Подскажите, пожалуйста, алгоритм выполнения.
PM MAIL   Вверх
Romikgy
Дата 3.10.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



если числа представлены строкой, тогда 
1. сравнить по длинне строк
2. сравнить по первому символу
3. сравнить по 2 символу
и т.д.

переходы между пунктами если ответ сравнения , равны


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Эксперт
****


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

Репутация: 33
Всего: 110



самый обычный:
сначала сравниваем старшие разряды
если они разные - они и определяют, какое число больше
если одинаковые - продолжаем со следующими разрядами
если оказались все равны - значит равны...


--------------------
qqq
PM WWW   Вверх
rash
Дата 3.10.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

если они разные - они и определяют, какое число больше


И этой проверки достаточно, чтобы сказать, что строка string1 больше строки string2
PM MAIL   Вверх
Romikgy
Дата 3.10.2006, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



rash, уточнять надо какое именно сравнения те надо
а вообще может и сказать , все равно имхо везде так делается


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Новичок



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

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



Цитата

уточнять надо какое именно сравнения те надо



Имеется ввиду сравнение как между 5 и 2, т.е. какое из  представленных длинных чисел больше.

PM MAIL   Вверх
Romikgy
Дата 3.10.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(rash @  3.10.2006,  21:50 Найти цитируемый пост)
Имеется ввиду сравнение как между 5 и 2, т.е. какое из  представленных длинных чисел больше.

дык можно сравнивать равно или не равно!

че ответ не подошел который дали?
сравнивай поразрядно , от старшего , но больше меньше


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
maxim1000
Дата 3.10.2006, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 33
Всего: 110



Цитата(rash @  3.10.2006,  21:18 Найти цитируемый пост)
И этой проверки достаточно, чтобы сказать, что строка string1 больше строки string2

но небольшое замечание: я предполагал, что длины обоих чисел одинаковые (т.е. дополнено нулями по необходимости), если разные - то, конечно, надо смотреть на длины чисел (точнее, длины их значащих частей, т.е. игнорируя нули в старших разрядах)


--------------------
qqq
PM WWW   Вверх
esperant0
Дата 4.10.2006, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 4
Всего: 14



можно использовать вероятностный алгоритм


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
maxim1000
Дата 4.10.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 33
Всего: 110



Цитата(esperant0 @  4.10.2006,  05:58 Найти цитируемый пост)
можно использовать вероятностный алгоритм

а поподробнее?
а то интересно...


--------------------
qqq
PM WWW   Вверх
rash
Дата 4.10.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Очень интересно. 
Как с помощью этого алгоритма сравнить, предположим, два 400-разрядных числа.
PM MAIL   Вверх
esperant0
Дата 4.10.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 4
Всего: 14



Вероятностный алгоритм:

1) стороны случайно равновероятно выбирают лог(х) битов числа и передают эти биты и их индексы друг-другу если все совпало ответ да, числа идентичны, иначе ответ нет.




--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Silent
Дата 5.10.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



"Вероятностный метод" - а если будут строки "11001..." и 10010..." и выберем n-3-й разряд? Никакого другого способа, кроме лобового использовать нельзя.
Пусть длинное число хранится стандартным способом. Тогда сравнение будет выглядеть так (C++):
bool equal(int[] a, int[] b){
  if (a[0]!=b[0]) return false;
  else {
    int i=a[0];
    while ((i>0)&&(a[i]==b[i])) i--;
    return (i==0);
  }
}

или Pascal:
Function equal(a,b:myar):boolean;
  var i:integer;
  begin
    if a[0]=b[0] then equal:=false
    else begin
      i:=a[0];
      while (i>0)and(a[i]=b[i]) do dec(i);
      equal:=i=0;
    end;
  end;
PM MAIL   Вверх
esperant0
Дата 5.10.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 4
Всего: 14



Цитата(Silent @ 5.10.2006,  16:11)
"Вероятностный метод" - а если будут строки "11001..." и 10010..." и выберем n-3-й разряд? Никакого другого способа, кроме лобового использовать нельзя.
 

Уточню.


Пусть необходимо ответить на вопрос две строки идентичны или отличаются в более чем х% мест. Тогда можно использовать вер-й алгоритм.

Но это уже из области "property testing".


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


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


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Romikgy
Дата 5.10.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



rash, определись на каком те это языке надо , и какой формат входных и выходных данных и тогда организуем


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

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


 




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


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

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