Андрей готовился к ЕГЭ по информатике и встретил в демо-версии ЕГЭ 2015 года такую задачу:
Автомат получает на вход четырёхзначное число. По этому числу строится новое число по следующим правилам.
Складываются первая и вторая, а также третья и четвёртая цифры исходного числа.
Полученные два числа записываются друг за другом в порядке убывания (без разделителей).
Пример. Исходное число: 3165. Суммы: 3+1=4;6+5=11. Результат: 114.
Укажите наименьшее число, в результате обработки которого автомат выдаст число 1817.
Андрей решил, что для самопроверки он напишет программу, которая решает подобную задачу. Мы думаем, что вы тоже с этим справитесь.
Входные данные
Программа получает на вход некоторое натуральное число N, которое может содержать две, три или четыре цифры.
Выходные данные
Программа должна вывести такое наименьшее целое четырёхзначное число K, после применения к которому описанного выше алгоритма получается число N. Если же такого числа не существует, программа должна вывести число 0.
Примеры
Ввод
1817
Вывод
8999
def checking(a1, a2, a3, a4):
return int(str(int(a1) + int(a2)) + str(int(a3) + int(a4)))
v = int(input())
v_str = str(v)
v1 = str(v // 1000)
v2 = str((v % 1000) // 100)
v3 = str(((v % 1000) % 100) // 10)
v4 = str(((v % 1000) % 100) % 10)
v_n = int(v3 + v4 + v1 + v2)
ready = False
a = 1
while ready == False:
a1 = a // 1000
a2 = (a % 1000) // 100
a3 = ((a % 1000) % 100) // 10
a4 = ((a % 1000) % 100) % 10
x = checking(a1, a2, a3, a4)
if x == v or x == v_n:
ready = True
else:
if a >= 9999:
print(0)
exit(0)
else: a += 1
print(a)
def checking(a1, a2, a3, a4):
s1 = a1 + a2
s2 = a3 + a4
if s1 > s2:
return int(str(s1) + str(s2))
else:
return int(str(s2) + str(s1))
v = int(input())
v_str = str(v)
v1 = str(v // 1000)
v2 = str((v % 1000) // 100)
v3 = str(((v % 1000) % 100) // 10)
v4 = str(((v % 1000) % 100) % 10)
v_n = int(v3 + v4 + v1 + v2)
ready = False
a = 1000
while ready == False:
a1 = a // 1000
a2 = (a % 1000) // 100
a3 = ((a % 1000) % 100) // 10
a4 = ((a % 1000) % 100) % 10
x = checking(a1, a2, a3, a4)
if x == v or x == v_n:
ready = True
print(a)
else:
if a >= 9999:
print(0)
ready = True
else: a += 1
N = 0
while N < 10 or N > 9999: # проверка на ввод двух-, трех-, четырехзначных чисел
print('Введите число N: ', end = '')
N = int(input())
out = 0
if N < 1819: # число не может быть больше, т.к. 9 + 9 = 18
for i in range (1000, 10000):
st = str(i)
# как вариант: вместо деления берем цифры из строки с проверяемым числом
s1 = int(st[0]) + int(st[1])
s2 = int(st[2]) + int(st[3])
if s1 > s2:
sum = int(str(s1) + str(s2))
else:
sum = int(str(s2) + str(s1))
if sum == N:
out = i
break
print(out)
Складываются первая и вторая, а также третья и четвёртая цифры исходного числа.
Полученные два числа записываются друг за другом в порядке убывания (без разделителей).
Пример. Исходное число: 3165. Суммы: 3+1=4;6+5=11. Результат: 114.
print(*map(str, sorted(eval('[{}+{},{}+{}]'.format(*input())), reverse=True)), sep='')