На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 1
ссылка на сообщение  Отправлено: 24.12.21 12:06. Заголовок: ПОМОГИТЕ С 22 ЗАДАЧЕЙ!!!!


Очень большой ответ (больше 46 млн), как получить это если не обычным перебором.

210) Ниже записана программа. Получив на вход число x, эта программа печатает числа a и b. При каком наибольшем натуральном значении переменной x программа выведет сначала 90, а потом 37?
x = int(input())
a = 3
b = 24
w = 8
while x > 0:
d = x % w
a *= d
if d < 5:
b += d
x //= w
w = 11 - w
print(a, b)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]





Сообщение: 20
ссылка на сообщение  Отправлено: 24.12.21 14:24. Заголовок: Это аналитическая за..


Это аналитическая задача. Такие задачи не решаются перебором.

Нужно набрать a = 90 /3 = 30 произведением, а b = 37 - 24 = 13 - сложением остатка от деления на основание системы счисления, которое меняется по формуле w = 11 - w - из которой следует, что основания чередуются между {3, 8}.

Число 30 можно разложить только на 3 * 5 * 2, поскольку a это произведение чисел, то все остальные числа должны быть равны 1.

Числа 3 и 5 не могут быть в системе счисления с основанием 3. Получается, что 3 и 5 стоят через одно число, которое есть в СС с основанием 3, число 2 как раз подходит для этого. Получается, что старшие разряды числа выглядят 523.... Теперь, чтобы d = 13, нужно к нему прибавлять все числа, меньшие 5. Получается, что у нас уже есть числа 2 и 3, тогда из единиц нужно набрать 13 - 2 - 3 = 8 единиц. У нас получается 3 + 8 = 11 разрядов.

Но если 3 * 2, то мы получим 6. Тогда у нас будет 2 числа (6 и 5), которые больше 5 и счетчик b их не учтет. Тогда нам нужно добрать уже 13 единиц. Получается следующее:

6 1 5 1 1 1 1 1 1 1 1 1 1 1 1
8 3 8 3 8 3 8 3 8 3 8 3 8 3 8

Теперь нужно получить десятичное число. Общая идея заключается в том, что целочисленное деление можно представить как k * C + d, где k - целое число, C - основание системы счисления, а d - остаток от деления.

Например, чтобы получить десятичное число для числа 615, записанного в СС с плавающим основанием (838), нужно (6 * 3 + 1) * 8 + 5 = 157.

Чтобы не ошибиться, пишем простенький код для перевода числа:

s = "615" + ("1" * 12) 
x = 6
w = 3


for i in range(1, len(s)):

d = int(s[ i])
x = x * w + d
w = 11 - w

print("target", x) #30077946657


Теперь проверяем получившееся число:

 
a = 3
b = 24
w = 8
while x > 0:
d = x % w

number = str(d) + number

a *= d
if d < 5:
b += d
x //= w
w = 11 - w
print("a, b:", a, b) # a, b 90 37


В итоге правильный ответ 30077946657, а в ответах к заданию указано 46246689, что является ошибкой, потому что получившееся число больше, указанного в ответах (нужно найти максимальное число), а в ответе видимо не учли вариант с 6 и 5 и взяли 5, 3, 2.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 3132
ссылка на сообщение  Отправлено: 24.12.21 14:38. Заголовок: beep пишет: В итоге ..


beep пишет:
 цитата:
В итоге правильный ответ 30077946657, а в ответах к заданию указано 46246689, что является ошибкой

Спасибо за замечание, условие и ответ исправлены.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
ссылка на сообщение  Отправлено: 04.02.22 13:09. Заголовок: Например, чтобы полу..


Например, чтобы получить десятичное число для числа 615, записанного в СС с плавающим основанием (838), нужно (6 * 3 + 1) * 8 + 5 = 157.

Подскажите, пожалуйста, почему мы вначале умножаем на 3, ведь сначала степень 8, а потом 3.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 3268
ссылка на сообщение  Отправлено: 04.02.22 13:18. Заголовок: Galina22 пишет: Напр..


Galina22 пишет:
 цитата:
Например, чтобы получить десятичное число для числа 615, записанного в СС с плавающим основанием (838), нужно (6 * 3 + 1) * 8 + 5 = 157. Подскажите, пожалуйста, почему мы вначале умножаем на 3, ведь сначала степень 8, а потом 3.


157 = x*8 + (157%8) = 19*8 + 5
19 = y*3 + (19%3) = 6*3 + 1
6 = z*8 + (6%8) = 0*8 + 6

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
ссылка на сообщение  Отправлено: 04.02.22 14:46. Заголовок: Понятно, спасибо!..


Понятно, спасибо!

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 6
ссылка на сообщение  Отправлено: 16.02.22 20:08. Заголовок: 4760_Решаю также, но ответ не такой, как нужно


Ниже на трёх языках программирования записана программа. Получив на вход число X, эта программа печатает числа A и B. При каком наибольшем натуральном значении переменной x программа выведет сначала 63, а потом 15?
x = int(input())
a = 3
b = 5
w = 9
while x > 0:
d = x % w
a *= d
if d < 5:
b += d
x //= w
w = 17 - w
print(a, b)

Решение
63/3=21=а
15-5=10=b
21=7*3
получается 73111111111 (меньше 5 десять цифр)
98989898989
73111111111
73=(1*8+0)*9+1
 
s = "73" + ("1" * 9)
x = 8
w = 1


for i in range(1, len(s)):
d = int(s[ i])
x = x * w + d
w = 17 - w

print(x)

Получаю 11674145, а правильный 198620506
Почему?

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 2
ссылка на сообщение  Отправлено: 14.03.22 10:50. Заголовок: x - это первая цифра..


x - это первая цифра, w - основание системы счисления

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 8
ссылка на сообщение  Отправлено: 27.02.22 18:15. Заголовок: Помогите с 4763


Ниже на трёх языках программирования записана программа. Получив на вход число X, эта программа печатает числа A и B. При каком наибольшем натуральном значении переменной x программа выведет сначала 210, а потом 24?
 
x = int(input())
a = 2
b = 14
w = 9
while x > 0:
d = x % w
a *= d
if d < 5:
b += d
x //= w
w = 15 - w
print(a, b)

решение:
а=210/2=105 , 105=7*5*3
24-14=10
9696969696
7531111111 и это число нужно перевести в 10 с.с.
753=(7*6+5)*9+3
Это верное начало?

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1034
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет