Алексей
Тогда все десятки? То есть 1, 10, 100...
Гамлет
code:
def digit_sum(num):
return sum([int(x) for x in str(num)])
def finder(num):
for i in range(1, 10000000):
if num * digit_sum(i) == i:
return i
print(finder(31))
terminal:
❯ time pypy main.py
372
pypy main.py 0.02s user 0.02s system 73% cpu 0.050 total
Алексей
Значит я чего-то не понял в задании
Гамлет
а я голову ломаю, пытаюсь формулу понять
Гамлет
а там перебор галимый
Igor
теперь запусти этот код на большом n
koichi
а почему он не должен работать на большом н?
Гамлет
питон завис
koichi
вхахвха
Igor
print(finder(5789348794590898043900934))
Гамлет
~/Development/code
❯ time python main.py
None
python main.py 13.82s user 0.00s system 99% cpu 13.824 total
~/Development/code 14s
❯ time pypy main.py
None
pypy main.py 1.90s user 0.13s system 99% cpu 2.045 total
Гамлет
Igor
хотим алгоритм который от длины числа почти не зависит
Гамлет
скинь код в лс
koichi
ну делись-делись
Гамлет
так я не спортсмен
koichi
интересненько узнать алгориьм
Алексей
Нужно условие. Так не понятно
Igor
перебор там :) обычный
koichi
мне в голову только вычисления по последним знакам числа приходит
Гамлет
это пусть ребята балуются
Igor
перебирать нужно просто сумму а не ответ
Igor
в этом подвох
Igor
все привыкли перебирать или входные или выходные данные :) а тут нужно промежуточные
Гамлет
ааааааааааааааааааааааааааааааааааааааааааа
Igor
def finder(n):
for s in range(1, 9000):
if s == sum(map(int, str(s*n))):
return s * n
return 0
print(finder(5789348794590898043900934))
koichi
уух сука умняга
Алексей
Igor
вот это будет работать для чисел до 1000 знаков
Igor
почти мгновенно
koichi
ну котелок варит сразу видно
Гамлет
казел
Гамлет
подловил
koichi
ну, если я не путаю, то игорек на алгоритмах собаку скушал
Алексей
Igor
я кукурузу жру :)
koichi
приятного аппетита :)
Igor
я к тому что собак не жру :)
koichi
аа.. и вот как Игоря понять хоть раз
koichi
загадка слога.
Igor
бля я жру кукурузу в прямом смысле и не жру собаку :)
Igor
вбросил потому что самому понравилась задача. Вроде тупой перебор но в зависимости от того что перебирать время работы отличается в разы
Гамлет
Гамлет
либо купил шаву на вокзале и реально собаку сьел
koichi
а я вот как тупой и накуренный ща, можно объяснить суть вкратце?
koichi
условно мы перебираем число * на цикл всех чисел чтобы получить тоже число, если такое нашлось - по перебору Гамлета
koichi
а в твоем случае мы проходимся по числам от 1 до 9000, суммируем мэп где с*на на входное число и возращаем потом умножение перебора цикла на входное?
Igor
а я вот как тупой и накуренный ща, можно объяснить суть вкратце?
ну казалось бы мы хотим знать число, и вроде как сумма цифр нам ничего не дает. Но если мы найдем сумму цифр нам не нужно находить сами цифры. Потому что умножив сумму цифр на n мы получим ответ.
А сумма цифр это максимум 9 умножить на кол-во знаков т е даже для чисел длинной в 1000 знаков нужно проверить всего 9000 значений
koichi
ааааа
koichi
ну я долбоебик, конечно
Igor
Anonymous
koichi
да-да, я понял уже.. с первого раза что-то не дошло пока всматривался..
Гамлет
Гамлет
а стоп
Гамлет
надо выключать режим дурачка
koichi
Самотыкинг мммм
ну, лучше самотыкаться и развиваться, чем пузыри из носа пускать, закрывшись в маня-мирке "я умный"
Гамлет
Гамлет
кто понял отсылку - респект, у вас хороший вкус
Алексей
koichi
Igor
пойду читать литрпг :) шо то тут сильно умное все :)
Гамлет
koichi
только там чуть по-другому было: "Очень легко иметь друзей, если разрешаешь смеяться над собой"
koichi
но сути не меняет
Гамлет
ага
Гамлет
я на память сказал, так даже лучше, не загуглят позеры
koichi
нечасто я вижу людей последнее время, кто пытается подобным выкаблучиваться :)
Erik
Erik
Как я не догадался до этого :(
Erik
Стоп