Решение задачи на Python
Вроде бы все должно работать, но система не пропускает.
Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Если число симметричное, то выведите 1, иначе выведите любое другое целое число. Число может иметь меньше четырех знаков, тогда нужно считать, что его десятичная запись дополняется слева нулями. Десятичная запись числа симметрична, если при прочтении слева направо и справа налево получается одно и то же число.
При решении задачи можно пользоваться только целочисленными арифметическими операциями. Нельзя пользоваться нелинейными конструкциями: ветвлениями, циклами, функциями.
H = int(input())
f1 = (H // 1000) # первое число в четырехзначном
f12 = (H % 10) # последнее число в четырехзначном
s1 = (H - (f1 * 1000)) // 100 # второе слева число
w1 = (H - (f1 * 1000) - (s1 * 100)) // 10 # третье число слева
q = (f12 * 1000) + (w1 * 100) + (s1 * 10) + f1 # обираем с конца
print(H // q)
Помогите решить. Где моя ошибка?
Ответы (4 шт):
Можно сравнить строку, представляющую число, с такой же перевернутой, не переводя в int:
num_str = input().zfill(4)
if num_str == num_str[::-1]:
print(1)
else:
print(42)
Если использовать .zfill() не разрешено, можно дополнить до четырех знаков самописным куском, например:
if len(num_str) < 4:
num_str = '0'*(4-len(num_str)) + num_str
H = int(input())
print(H // 1000 == H % 10 and H // 100 % 10 == H % 100 // 10)
Правда, выводит True/False - но ведь это же не проблема?
В комментариях расписано, как и что считается.
V = int(input())
Axxx = V // 1000 # цифра на позиции тысяч
xBxx = V % 1000 // 100 # цифра на позиции сотен
xxBA = xBxx * 10 + Axxx # зеркальное двузначное число из цифр сотен и тысяч
xxCD = V % 100 # младшая (правая) половина числа
symmetry = xxBA - xxCD # если 0 - то исходное число симметрично
print(symmetry + 1) # выведет 1 если symmetry = 0, иначе будет другое число
Можно решить так:
H = input()
print(int(H[0]) - int(H[3]) + 16*(int(H[1]) - int(H[2])) + 1)