Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2013 16:37:47

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Задача "Следующее число"

Isem
Операция
n = str(10**100000)
уже работает более 0.5 сек на 3ГГц процессоре.
3.6 на 2.4 ггц, а весь скрипт:
import re
import time
x = 10**100000
def f(x):
	m = re.match("^(\d*?)(\d0*)$", '0'+x)
	part1 = str(int(m.group(1))+1)
	delta = (sum(map(int, x))-sum(map(int, part1)))
	part2 = str(delta%9)+'9'*(delta//9)
	return int(part1)*10**len(m.group(2))+int(part2)
start = time.time()
f(str(x))
print (time.time() - start)
за 4.1 с.

Офлайн

#2 Окт. 24, 2013 02:21:26

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Задача "Следующее число"

А как насчет x = 10**100000-1 или x = 10**100000 - 10**10000 + 1 ?
А еще лучше, когда x = 10**100000 - 10**99999 + 1.



Отредактировано Isem (Окт. 24, 2013 09:18:14)

Офлайн

#3 Окт. 24, 2013 14:27:32

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Задача "Следующее число"

Isem
А как насчет x = 10**100000-1 или x = 10**100000 - 10**10000 + 1 ?
А еще лучше, когда x = 10**100000 - 10**99999 + 1.
Сказал же уже - избавься от регулярки и мапов, всё отлично укладывается. Алгоритм дольше всего работает с нулями и девятками на конце(999…00).
Вообще задача не для питона - питон простой, удобный, но никак не быстрый.

Отредактировано Euler (Окт. 24, 2013 14:31:56)

Офлайн

#4 Окт. 24, 2013 15:36:38

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Задача "Следующее число"

Euler
Сказал же уже
Ты чо, птица-говорун?
Euler
избавься от регулярки и мапов
Твой код - вот ты и избавляйся. Или это не твой код и ты птица-говорун?
Euler
Вообще задача не для питона - питон простой, удобный, но никак не быстрый.
Какая небыстрая голова - такой и небыстрый питон.
Может у тебя есть тяга к С?



Офлайн

#5 Окт. 24, 2013 16:57:48

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Задача "Следующее число"

Isem
Твой код - вот ты и избавляйся.
А может правильнее тебе нужно - ты и избавляйся? Я у себя проверил, алгоритм укладывается в отведённое время, если тебе нужна готовая реализация, то придётся и самому немного подумать. Хамство тебе тут никак не поможет.

Офлайн

#6 Окт. 24, 2013 17:06:34

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Задача "Следующее число"

Euler
Я у себя проверил, алгоритм укладывается в отведённое время

Isem
А как насчет x = 10**100000-1 или x = 10**100000 - 10**10000 + 1 ?
А еще лучше, когда x = 10**100000 - 10**99999 + 1.
Euler
Хамство тебе тут никак не поможет.
Спасибо, мне помощь не нужна. Хамите вы, сударь.



Офлайн

#7 Окт. 24, 2013 17:13:26

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Задача "Следующее число"

Euler, не дескридетируйте имя гения.

p.s. Главное - написать без ошибок.



Отредактировано Isem (Окт. 24, 2013 17:15:29)

Офлайн

#8 Окт. 24, 2013 18:58:08

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Задача "Следующее число"

Isem
Спасибо, мне помощь не нужна.
Тогда чего ты у меня готовый ответ клянчишь? Причём такой, в котором ни строчки меняте не надо, поскольку и словестное описание и пример реализации я дал.
Isem
Хамите вы, сударь.
Где именно?

Офлайн

#9 Фев. 25, 2014 17:43:19

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Задача "Следующее число"

Euler
Где именно?
Везде. Не слышите собеседника, игнорируете примеры с вопросами, неадекватно реагируете. Это либо хамство, либо тупость, либо и то и другое. Скорее всего тупость, и как следствие - хамство, выражающееся в неадекватности.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version