Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2013, 13:02   #1
RIKISHI007
Пользователь
 
Регистрация: 04.07.2013
Сообщений: 27
Восклицание Требуется сравнить 3 огромных числа до 10^100

Требуется сравнить 3 числа, каждое число не превышает гугол (10^100)

Помогите, не могу уже 2 день никак решить

вводится 3 числа через пробел, каждое не превышает гугол (long long int не работает). Длинная арифметика надо, но я ее не знаю, помогите плиз
RIKISHI007 вне форума Ответить с цитированием
Старый 06.07.2013, 13:32   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Тут сравнивать-то особо нечего... Типа такого
Код:
bool NumberLess(std::string lhs, std::string rhs)
{
	return lhs.size() < rhs.size() || (lhs.size() == rhs.size() && lhs < rhs);
}
Somebody вне форума Ответить с цитированием
Старый 07.07.2013, 00:02   #3
RIKISHI007
Пользователь
 
Регистрация: 04.07.2013
Сообщений: 27
По умолчанию

Нужно сравнить три числа до 10 в 100 степени, и вывести максимальное на экран!

Числа могут быть от 1 до 10000000000000000000000000000000000 00000000000000000000000000000000000 000000000000000000000 (натуральные)
RIKISHI007 вне форума Ответить с цитированием
Старый 07.07.2013, 00:07   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Что вызывает затруднения?
Если два числа имеют разную длину, то берем с наибольшей, если длина одинакова, то простое сравнение строк (a > b) даст верный результат.
Код:
string a, b, c;
cin >> a >> b >> c;
a = (a.length() < b.length()) ? b : (a.length() > b.length()) ? a : (a > b) ? a : b;
a = (a.length() < c.length()) ? c : (a.length() > c.length()) ? a : (a > c) ? a : c;
cout << a;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.07.2013, 00:47   #5
RIKISHI007
Пользователь
 
Регистрация: 04.07.2013
Сообщений: 27
По умолчанию

Нужно сравнить три числа, а не два! И вы не угадали с числами разных длин. Здесь задача для очень умных!

1. Все числа разные по длине.
2. Все числа одинаковые по длине
3. Два из 3 чисел одинаковые/разные по длине.

Это и вызывает трудности!
RIKISHI007 вне форума Ответить с цитированием
Старый 07.07.2013, 00:49   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2RIKISHI007
объясняю для альтернативно одаренных. тебе предлагают не использовать стандартные типы данных для представления чисел, а сравнивать их в виде строк, в лексикографическом порядке.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 07.07.2013 в 00:53.
pproger вне форума Ответить с цитированием
Старый 07.07.2013, 00:52   #7
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Ведущие нули как бы тоже отрезать следует, а то (0001 > 999) будет true
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 07.07.2013, 00:57   #8
RIKISHI007
Пользователь
 
Регистрация: 04.07.2013
Сообщений: 27
По умолчанию

а можно сделать массив целочисленный в a[0] запихат кол-во символов, в цикле downto от 102 до 1 запихать числа число например 758 a[102]=8 a[101]=5 a[102]=7
а остальные нули будут. Так получиться если мы вводим число например

52352562456252524632 и 758, то сравнение будет

52352562456252524632
00000000000000000758

?????

102 - потому что число гугол имеет 101 символ, единица и 100 нулей, максимум!

Последний раз редактировалось RIKISHI007; 07.07.2013 в 00:59.
RIKISHI007 вне форума Ответить с цитированием
Старый 07.07.2013, 01:00   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от RIKISHI007 Посмотреть сообщение
а можно сделать массив целочисленный в a[0] запихат кол-во символов, в цикле downto от 102 до 1 запихать числа число например 758 a[102]=8 a[101]=5 a[102]=7
а остальные нули будут. Так получиться если мы вводим число например

52352562456252524632 и 758, то сравнение будет

52352562456252524632
00000000000000000758

?????
ну делайте если хотите, вам предложили как сделать.
строками куда проще, ибо у них есть встроенное сравнение, а насчет трех чисел, то максимум три сравнения сделать и сможете их расставить по возрастанию.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.07.2013, 01:25   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

"Нужно сравнить три числа, а не два!" - нашли наибольшее из первых двух, сравнили с третьим.
"И вы не угадали с числами разных длин." - не знаю, не знаю. Спокойно сдал http://acmp.ru/index.asp?main=task&id_task=7 (даже в топ попал )
"Здесь задача для очень умных!" - ну Вам виднее
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сравнить числа в делфи amki6 Помощь студентам 2 16.02.2013 20:51
Дан целочисленный массив А(m,n) задается с экрана либо генерируется в пределах -100 до 100. Найти числа b1 b2 …bn равные суммам эл 95% Помощь студентам 0 07.01.2013 16:52
Задані цілі числа від 1 до 100.Надрукувати в порядку зростання усі числа що можна подати у вигляді 7*i*j+j+3, де i,j - цілі числа. Саша513 Паскаль, Turbo Pascal, PascalABC.NET 0 16.05.2012 18:45
Числа от 1 до 100 и обратно Винни пух JavaScript, Ajax 6 05.05.2009 17:22