OpenFIPI 2.0

14

2

3F4398

Значение арифметического выражения 7350 + 7150  x, где x  целое положительное число, не превышающее 2300, записали в семеричной системе счисления. Определите наибольшее значение x, при котором в семеричной записи числа, являющегося значением данного арифметического выражения, содержится ровно 200 нулей.

В ответе запишите число в десятичной системе счисления.

2001

# Поскольку ищем наибольший Х, идем по убыванию
for x in range(2300, 0,  -1):
     a = 7**350 + 7**150 - x
     # посчитываем количество нулей без хранения семеричной записи
     k = 0
     while a > 0:
          if a % 7 == 0:
               k += 1
          a //= 7
     if k == 200:
          print(x)
          # после первого подходящего прерываем цикл
          break


for x in range(2300, 0,  -1):
     a = 7**350 + 7**150 - x
     # храним семеричную запись в строке
     s = ''
     while a > 0:
          s = f'{a % 7}' + s
          a //= 7
     if s.count('0') == 200:
          print(x)
          break


for x in range(2300, 0,  -1):
     a = 7**350 + 7**150 - x
     # храним семеричную запись в списке
     s = []
     while a > 0:
          s += [a % 7]
          a //= 7
     if s.count(0) == 200:
          print(x)
          break

 

for x in range(2300,1,-1): #перебор с конца, тк нужно наибольшее x
    a = 7**350 + 7**150 - x
    k = 0
    while a>0:
        if a%7==0: k+=1
        a = a//7
    if k==200:
        print(x)
        break

Просмотреть отправленные ответы 3F4398