Форум » Системы счисления » Объяснение решения задачи 367 » Ответить

Объяснение решения задачи 367

Yanninay: Доброго времени суток. Решали с товарищем задачу 367 (А. Богданов) Операнды арифметического выражения записаны в системе счисления с некоторым частично заданным основанием 15123x5 + 151x233 В записи чисел переменной x обозначена неизвестная цифра. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 14. Для найденного значения x вычислите частное от деления значения арифметического выражения на 14 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно. Пришли к следующему коду: [pre2] alf = "12345678910" for x in alf: num1 = int('123' + x + '5') num2 = int('1' + x + '233') if (int(num1) + int(num2)) % 14==0: print(( int(num1) +int(num2)) // 14) [/pre2] Вывод: [pre2] PS G:\ICT\Hometask\14\367> python .\main.py 1682 2187 1682 [/pre2] Правильного ответа (1827) здесь нет. Обратились к решению, там указан следующий код: [pre2] for x in range(10): a = 1 * int(f'123{x}5') + 5 b = 1 * int(f'1{x}233') + 5 if (a+b) % 14 == 0: r = (a+b) // 14 [/pre2] Почему конкретно в данном случае мы добавляем к полученному числу 5? Наш код выдаёт верный ответ если добавить 5 к полученным числам, но зачем это нужно и откуда это число вообще берётся? Решение на ютубе не помогло, автор скопировал код А. Богданова, и изменил пару переменных для различия, при этом не дав адекватного объяснения Украденный код Ивана Баженова(поиграем в найди отличия): [pre2] for x in range(0, 10): num1 = int(f"123{x}5") + 5 num2 = int(f"1{x}233") + 5 if (num1 + num2) % 14 == 0: print((num1 + num2) // 14) [/pre2]

Ответов - 1

Ж: При переводе в различные системы счисления int можно использовать только, если основание сс меньше или равно 36. Т.е. в нашем случае нельзя. В коде он используется, чтобы перевести само основание сс в десятичной число (кстати, меня смущает, что X - это именно десятичная цифра, может она буква abcd... как в шестнадцатеричной сс) В десятичной сс: 123=1*100+2*10+3*1 или точнее: 123=1*(10 в квадрате)+2*(10 в первой) +3*(1- в нулевой) В неизвестно в данном случае сс: 15 в сс(123x5) = 1* (123x5 в первой) + 5 *(123x5 в нулевой) (последнее слагаемое и есть 5)



полная версия страницы