Форум » Системы счисления » № 5515 » Ответить

№ 5515

inform_lesson: Добрый день. Можно ли № 5515 решать так ? Если нет, то где ошибка? (№ 5515) (И. Степанов) Операнды арифметического выражения записаны в системе счисления с основанием 55. ZaYX55 – 2XaY55 В записи чисел переменной a обозначена неизвестная цифра из алфавита 44-ричной системы счисления. Определите наибольшее и наименьшее значение a, при котором значение данного арифметического выражения кратно 29. Для найденных значений a найдите модуль разности значений соответствующих выражений. [pre2] var x, y, z, a, min, max: integer; f, p,k: biginteger; begin min := 44; max := -1; for x := 0 to 54 do for y := 0 to 54 do for z := 0 to 54 do for a := 0 to 43 do begin f := z * biginteger.Pow(55, 3) + a * biginteger.Pow(55, 2) + y * 55 + x - 2 * biginteger.Pow(55, 3) - x * biginteger.Pow(55, 2) - a * 55 - y; if (f mod 29 = 0) and (a < min) then begin min := a; p := f; end; if (f mod 29 = 0) and (a > max) then begin max := a; k := f; end; end; write(abs(k - p)); end. [/pre2]

Ответов - 14

Stepanoviv: Здравствуйте. Дело в том, что вы не совсем поняли условие задачи, так как в ней была небольшая ловушка. X, Y и Z - это не переменные. Это цифры числа в 44-ричной системе счисления. A-1-, B-11, .., F -16, ......, X-33, Y-34, Z - 35. Соответственно не нужно перебирать X, Y, Z, Причем совершенно непонятно, почему перебор для 44-ричной системы счисления идет от 0 до 54. Таким образом программу нужно дорабатывать.

s11kai: Stepanoviv пишет: Причем совершенно непонятно, почему перебор для 44-ричной системы счисления идет от 0 до 54. Таким образом программу нужно дорабатывать. Если внимательно прочитать условие задачи, то можно заметить, что там нет 44-ричной системы счисления: "364 (И. Степанов) Операнды арифметического выражения записаны в системе счисления с основанием 55. ZaYX55 – 2XaY55 В записи чисел переменной a обозначена неизвестная цифра из алфавита 55-ричной системы счисления. Определите наибольшее и наименьшее значение a, при котором значение данного арифметического выражения кратно 29. Для найденных значений a найдите модуль разности значений соответствующих выражений."

inform_lesson: Спасибо


inform_lesson: Спасибо

Тверская: Добрый день! Вы изменили условие задачи 5515 и это понятно. Но и теперь НЕ ПОНЯТНО, почему X-33, Y-34, Z-35? Для этих значений ответ получается, но откуда и в какой системе счисления значение переменных ?

Поляков: Все цифры заданы в системе счисления с основанием 55.

Тверская: Спасибо! Тогда цифр 55, старшая 54 и откуда следует, что Z-35?

Поляков: Тверская пишет: откуда следует, что Z-35? Первые 36 цифр - стандартные: 0123...9ABC...XYZ.

Тверская: Вот теперь СПАСИБО! Огромное! Извините за бестолковость!

Трухний: Вариант с массивом и без массивов по горнеру: Без массива: for a in range(55): s=((35*55+a)*55+34)*55+33-((2*55+33)*55+a)*55-34 # т.к. вычитаем, не забываем сменить знак на противоположный if s%29==0: min=s break for a in range(55): s=((35*55+a)*55+34)*55+33-((2*55+33)*55+a)*55-34 if s%29==0: print(a) max=s print(max-min) Ответ: 86130 С массивом: m=[] for a in range(55): s=((35*55+a)*55+34)*55+33-((2*55+33)*55+a)*55-34 if s%29==0: m.append(s) #при выполнении условия добавляем s в массив print(max(m)-min(m))

Трухний: Без массива: for a in range(55): ...s=((35*55+a)*55+34)*55+33-((2*55+33)*55+a)*55-34 # т.к. вычитаем, не забываем сменить знак ..................................................................................... на противоположный ...if s%29==0: ......min=s ......break for a in range(55): ... s=((35*55+a)*55+34)*55+33-((2*55+33)*55+a)*55-34 ...if s%29==0: max=s print(max-min) Ответ: 86130 С массивом: m=[] for a in range(55): ...s=((35*55+a)*55+34)*55+33-((2*55+33)*55+a)*55-34 ...if s%29==0: m.append(s) #при выполнении условия добавляем s в массив print(max(m)-min(m))

s11kai: Трухний пишет: Без массива: for a in range(55): ...s=((35*55+a)*55+34)*55+33-((2*55+33)*55+a)*55-34 # т.к. вычитаем, не забываем сменить знак ..................................................................................... на противоположный ...if s%29==0: ......min=s ......break for a in range(55): ... s=((35*55+a)*55+34)*55+33-((2*55+33)*55+a)*55-34 ...if s%29==0: max=s print(max-min) Ответ: 86130 Как-то уж очень мудрено! Можно и без массива, и проще, например так: [pre2] Max = Min = 0 for a in range(54+1): a1 = 35*55**3 + a*55**2 + 34*55 + 33 a2 = 2*55**3 + 33*55**2 + a*55 + 34 if abs(a1 - a2)%29 == 0: if Min == 0:Min = abs(a1 - a2) Max = abs(a1 - a2) print( Max - Min ) [/pre2]

Поляков: Извините не учёл, что пробелы стираются - для наглядности заменил их точками.А если прочитать, что написано на желтом фоне в верхней части страницы, то и не понадобится так делать.

s11kai: inform_lesson пишет: Добрый день. Можно ли № 5515 решать так ? Если нет, то где ошибка? (№ 5515) (И. Степанов) Операнды арифметического выражения записаны в системе счисления с основанием 55. ZaYX55 – 2XaY55 В записи чисел переменной a обозначена неизвестная цифра из алфавита 44-ричной системы счисления. Определите наибольшее и наименьшее значение a, при котором значение данного арифметического выражения кратно 29. Для найденных значений a найдите модуль разности значений соответствующих выражений. В разбираемой задаче нет ни единого слова о 44-ричной системе счисления!



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