Найти - Пользователи
Полная версия: Задача "Следующее число"
Начало » Центр помощи » Задача "Следующее число"
1 2 3
Euler
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 с.
Isem
А как насчет x = 10**100000-1 или x = 10**100000 - 10**10000 + 1 ?
А еще лучше, когда x = 10**100000 - 10**99999 + 1.
Euler
Isem
А как насчет x = 10**100000-1 или x = 10**100000 - 10**10000 + 1 ?
А еще лучше, когда x = 10**100000 - 10**99999 + 1.
Сказал же уже - избавься от регулярки и мапов, всё отлично укладывается. Алгоритм дольше всего работает с нулями и девятками на конце(999…00).
Вообще задача не для питона - питон простой, удобный, но никак не быстрый.
Isem
Euler
Сказал же уже
Ты чо, птица-говорун?
Euler
избавься от регулярки и мапов
Твой код - вот ты и избавляйся. Или это не твой код и ты птица-говорун?
Euler
Вообще задача не для питона - питон простой, удобный, но никак не быстрый.
Какая небыстрая голова - такой и небыстрый питон.
Может у тебя есть тяга к С?
Euler
Isem
Твой код - вот ты и избавляйся.
А может правильнее тебе нужно - ты и избавляйся? Я у себя проверил, алгоритм укладывается в отведённое время, если тебе нужна готовая реализация, то придётся и самому немного подумать. Хамство тебе тут никак не поможет.
Isem
Euler
Я у себя проверил, алгоритм укладывается в отведённое время

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

p.s. Главное - написать без ошибок.
Euler
Isem
Спасибо, мне помощь не нужна.
Тогда чего ты у меня готовый ответ клянчишь? Причём такой, в котором ни строчки меняте не надо, поскольку и словестное описание и пример реализации я дал.
Isem
Хамите вы, сударь.
Где именно?
Isem
Euler
Где именно?
Везде. Не слышите собеседника, игнорируете примеры с вопросами, неадекватно реагируете. Это либо хамство, либо тупость, либо и то и другое. Скорее всего тупость, и как следствие - хамство, выражающееся в неадекватности.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB