Домашние задания: Информатика

Тест по информатике

Найдите наименьшее из таких чисел x, при вводе которых алгоритм выводит на экран сначала цифру 3, а затем 5.

x = int(input())
a = 0
b = 0
while x > 0:
a = a + 1
b = b + x % 10
x = x // 10
print(a)
print(b)
В ответ запишите только число
Такого значения x, вроде, не существует.
Людмила Гришина
Людмила Гришина
43 559
Лучший ответ
Алгоритм суммирует все цифры введенного числа и выводит количество цифр в нем, поэтому для того, чтобы на экране сначала появилась цифра 3, необходимо, чтобы введенное число содержало как минимум 3 цифры и сумма этих цифр равнялась или превышала 8 (так как 3 уже будет выведено на экран).

Попробуем перебрать возможные варианты трехзначных чисел с суммой цифр 8 и более:

179 (1 + 7 + 9 = 17)
188 (1 + 8 + 8 = 17)
197 (1 + 9 + 7 = 17)
269 (2 + 6 + 9 = 17)
278 (2 + 7 + 8 = 17)
287 (2 + 8 + 7 = 17)
296 (2 + 9 + 6 = 17)
359 (3 + 5 + 9 = 17)
Среди этих чисел наименьшим будет 179.

Ответ: 179.
Людмила Гришина Ошибаетесь, друг мой. При x=179, a=3; b=17
Для того, чтобы решить данную задачу, нужно пройти в цикле все возможные варианты чисел и проверять вывод программы на экран.

Можно заметить, что условие "на экран выводится сначала 3, а затем 5" значит, что программа считывает число x, а затем выводит кол-во его цифр и их сумму.

Начнем проверять числа с единицы в цикле while и выводить каждое проверяемое число на экран. Как только на экран выведутся число цифры и их сумма, которые соответствуют условию задачи, остановим цикл и вернем это число.

Также можно заметить, что самое маленькое число, у которого сумма цифр больше 8 (3 + 5), это 59, поэтому мы можем начать перебирать числа от 59.

```python
x = 59
while True:
a, b = 0, 0
temp = x
while temp > 0:
a += 1
b += temp % 10
temp //= 10
if a == 2 and b == 8: # если на экране выводится 2 цифры и их сумма равна 8
break
x += 1
print(x)
```
Ответ: 68.
Людмила Гришина Ошибаетесь, друг мой. При x=68 a=2; b=14