Передача файла по сети Интернет от Саши к Вите заняла 4 секунды. Витя изменил этот файл и передал по сети Васе за 9 секунд. Во столько раз изменил файл Витя, если известно, что скорость передачи по сети от Саши к Вите в 1,5 раза выше, чем скорость передачи от Вити к Васе.
for i in "1000".to_i(8).."7777".to_i(8)
s = i.to_s(2)
k = 0
s.chars.each {|c| k += 1 if c == "1"}
if (k==5)
p [i, i.to_s(8), s, k]
break
end
end
Вывод
[527, "1017", "1000001111", 5]
ответ
1017
Если решать аналитически, то наверное это делается методом подбора плюс быстрым переводом восьмеричной системы в двоичную (каждая цифра 8чной переводится в 3 цифры 2чной, можно заранее посчитать кол-во единиц для каждой). Сразу понимаем что в числах 1000-1016 будет слишком мало единиц, только "7"_8 переводится в "111"_2. И еще две единицы дают "1"_8
from itertools import count
def prime(num):
if num <= 1:
return False
for div in range(2, num // 2 + 1):
if num % div == 0:
return False
return True
def nth_superprime(n):
if n < 1:
return None
else:
c = 0
for x in count(2):
digits = [int(l) for l in str(x)]
if all(map(prime, digits)):
c += 1
print(c, '=', x)
if c == n:
return x
print(nth_superprime(101))
# Вывод (и ответ): 2322