Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

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

Ответ
 
Опции темы
Старый 02.06.2018, 00:40   #1
Александр121
Форумчанин
 
Регистрация: 18.09.2017
Сообщений: 235
Репутация: -75
По умолчанию Есть какой нибудь алгоритм сравнение больших чисел?

ввод
4 # сколько тех штук в низу
4 2 2 2 2 2 # первое число сколько чисел в этом ряде -1
3 3 3 3 3
2 2 3 4
5 9 9 9 9 9 9

как тут возводится в степень
2 2 3 4

сначала 3^4 = 81
потом 2^81 = 2417851639229258349412352

вопрос как можно сравнить эти числа если возвести их в степень и потом сравнить не возможно?
(точнее возможно но какие нужны ресурсы?)))


Код:

n = int(input())
    h = {}
    for i in range(n):
        args = list(map(int, input().split()))
        args.pop(0)
        c = 1
        for p in args[::-1]:
            c = p ** c
    h[i] = c
    print(*[x[0] + 1 for x in sorted(h.items(), key=lambda x: x[1])])

Александр121 вне форума   Ответить с цитированием
Старый 02.06.2018, 04:17   #2
Александр121
Форумчанин
 
Регистрация: 18.09.2017
Сообщений: 235
Репутация: -75
По умолчанию

https://habr.com/post/265067/
https://ru.wikipedia.org/wiki/%D0%A2...86%D0%B8%D1%8F
https://habr.com/post/265067/
Александр121 вне форума   Ответить с цитированием
Старый 02.06.2018, 04:34   #3
Александр121
Форумчанин
 
Регистрация: 18.09.2017
Сообщений: 235
Репутация: -75
По умолчанию

на англ форму обсуждают этот вопрос
https://math.stackexchange.com/quest...f-power-towers
Александр121 вне форума   Ответить с цитированием
Старый 02.06.2018, 05:38   #4
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,648
Репутация: 2371

icq: 100500
skype: kick-ass
По умолчанию

дополнить короткую строку слева нулями, а потом тупо сравнить как 2 строки, не?
__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 02.06.2018, 06:28   #5
Александр121
Форумчанин
 
Регистрация: 18.09.2017
Сообщений: 235
Репутация: -75
По умолчанию

посмотрите как тут возводится в степень
Это пример одного ряда тут как бы я просто показал как возводится в степень тут только одно число
2 2 3 4

сначала 3^4 = 81
потом 2^81 = 2417851639229258349412352

не? 3 3 3 3 3 Вы представляете какая здесь будет строка? 3^7625597484987 это гигант просто))) если под каждую цифру отводить по 4 бита, для хранения такого числа нам понадобится всего лишь 1,8 терабайт. Ну и суперкомп чтобы вычеслить это.

5 9 9 9 9 9 9 это пример не один в пк не вычислит. а число 3^7625597484987 по сравнению с ним просто микроб.

Последний раз редактировалось Александр121; 02.06.2018 в 06:38.
Александр121 вне форума   Ответить с цитированием
Старый 04.06.2018, 12:54   #6
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,687
Репутация: 2097
По умолчанию

если надо ТОЛЬКО сравнить
a>b <=> ln(a)>ln(b)

2 2 3 4 --> 4*ln(3)*ln(2)
5 9 9 9 9 9 9 --> 9*ln(9)*ln(9)*ln(9)...ln(9)
P.S. вместо основания e можно использовать ЛЮБОЕ другое основание (например 3)
хотя...
ведь здесь РАЗНОЕ число ln. Надо еще вначале привести к одинаковому количеству "степеней".
Добавить в "менее степенную" необходимое(до равенства числа элементов) единиц(1)
2 2 3 4 -->3 2 3 4 1 ->N 2 3 4 1 ... 1 --> 1*ln(1)...ln(1) *ln(4)*ln(3)*ln(2)
а если теперь еще добавить по одной единице в КАЖДУЮ, то...
{1 *} ln(1)...ln(1)*ln(4)*ln(3)*ln(2) ???? {1 *} ln(9)...ln(9)
__________________
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 04.06.2018 в 13:09.
evg_m вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение чисел. Есть ли разница по времени? WildTaburet Общие вопросы C/C++ 4 21.09.2012 23:33
сравнение 1-ой буквы строкового элемента массива с какой нибудь любой буквой (lazarus) arsenalfc Помощь студентам 7 22.05.2012 00:40
Есть ли в C++ какой-нибудь стандартный класс для работы с датой (не зависящий от среды разработки)? RomanA Общие вопросы C/C++ 0 07.05.2012 11:18
В Билдере есть какой-нибудь компонент для многострочного вывода текста, аналогично Edit? Наталия 555 C++ Builder 4 15.06.2011 13:12
алгоритм сравнения больших чисел со сдвигом WOLFak Паскаль 0 29.12.2008 23:36


15:53.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru