Python
Информатика Pythoon 8 класс)
Найдите и выведите на экран все двузначные числа, сумма цифр которых при умножении на 3 увеличивается в 2 раза.
Надо немного подумать головой. Запишем исходное число как N, а его сумму цифр - как S(N).
Сумма цифр числа, кратного трём, тоже кратна трём. Значит, S(3N) кратна трём, а поскольку она равна удвоенной S(N), то S(N) также кратна трём, и тогда само число N кратно трём.
Но если N кратно трём, то 3N кратно 9, и тогда S(3N) кратна 9. Тогда и S(N), как половина от S(3N), кратна 9, и само число N кратно 9.
На этом цепочка признаков останавливается, т.е. сумма цифр числа, кратного 27, не обязана быть кратной 27. :-)
Это оставляет нам для перебора не более 10 двузначных чисел: 18, 27, ..., 90, 99.
Можно перебрать их в лоб, а можно ещё подумать.
S(99) = 18, и оно нам не подходит (S(297) = 18).
Сумма цифр каждого из остальных чисел из списка равна 9. Большинство из них при утроении также дают сумму цифр 9: признак делимости неумолим, а чтобы выдать в сумме 18, цифры утроенного числа должны быть достаточно большими, и надо хотя бы в одном разряде избежать переноса. Например, умножая 45 на 3, мы потеряем девятку (S(135) = 9, в этом "виноват" перенос). Значит, нужно хотя бы в одном разряде исходного числа иметь тройку которая при умножении на 3 даст девятку, что оставляет нам два числа: 36 и 63. Но в случае с 36 перенос от шестёрки ломает нам сумму цифр: S(108) = 9. А 63 подходит (S(189) = 18). Это - единственное число с нужным нам свойством.
Код, перебирающий все числа, кратные 9, даст нам такой же ответ:
Можно смеха ради перебрать и весь диапазон, как это сделал раб нейросети в первом ответе:
Сумма цифр числа, кратного трём, тоже кратна трём. Значит, S(3N) кратна трём, а поскольку она равна удвоенной S(N), то S(N) также кратна трём, и тогда само число N кратно трём.
Но если N кратно трём, то 3N кратно 9, и тогда S(3N) кратна 9. Тогда и S(N), как половина от S(3N), кратна 9, и само число N кратно 9.
На этом цепочка признаков останавливается, т.е. сумма цифр числа, кратного 27, не обязана быть кратной 27. :-)
Это оставляет нам для перебора не более 10 двузначных чисел: 18, 27, ..., 90, 99.
Можно перебрать их в лоб, а можно ещё подумать.
S(99) = 18, и оно нам не подходит (S(297) = 18).
Сумма цифр каждого из остальных чисел из списка равна 9. Большинство из них при утроении также дают сумму цифр 9: признак делимости неумолим, а чтобы выдать в сумме 18, цифры утроенного числа должны быть достаточно большими, и надо хотя бы в одном разряде избежать переноса. Например, умножая 45 на 3, мы потеряем девятку (S(135) = 9, в этом "виноват" перенос). Значит, нужно хотя бы в одном разряде исходного числа иметь тройку которая при умножении на 3 даст девятку, что оставляет нам два числа: 36 и 63. Но в случае с 36 перенос от шестёрки ломает нам сумму цифр: S(108) = 9. А 63 подходит (S(189) = 18). Это - единственное число с нужным нам свойством.
Код, перебирающий все числа, кратные 9, даст нам такой же ответ:
def digsum(n): return n // 100 + n // 10 % 10 + n % 10
print(*(n for n in range(18, 100, 9) if digsum(n) * 2 == digsum(n * 3)))
Можно смеха ради перебрать и весь диапазон, как это сделал раб нейросети в первом ответе:
def digsum(n): return n // 100 + n // 10 % 10 + n % 10
print(*(n for n in range(10, 100) if digsum(n) * 2 == digsum(n * 3)))
Получится ровно такой же ответ (63), что и неудивительно: против математической закономерности не попрёшь.Все двузначные числа здесь перебирать, естественно, не требуется, но надо получить ВСЕ двузначные числа, удовлетворяющие поставленному условию. При запуске кода с полным перебором:
def s(x): return x//100+x%10+x//10%10
for n in range(10, 100):
if s(3*n)==2*s(n): print(-n, n)
действительно печатаются ВСЕ такие числа! Их насчитывается ровно два, как бы кто не пытался с этим спорить, наплевав при этом на математику вообще и на элементарную математику в частности...При умножении на 3 увеличивается в 2 разаЧто за бред? При умножении на 3 число увеличивается в 3 раза. Магии не бывает.
для решения данной задачи тебе нужно перебрать все двузначные числа и проверить, удовлетворяет ли сумма их цифр условию задачи. Если да, то выводим это число на экран.
Можно использовать следующий код на Python:
Например, если запустить этот код, то на экране появятся числа 18, 45 и 72.
Можно использовать следующий код на Python:
Код:
for i in range(10, 100):
digits_sum = sum(int(digit) for digit in str(i))
if digits_sum * 3 == 2 * (digits_sum + i):
print(i)
Здесь мы перебираем все числа от 10 до 99, вычисляем сумму их цифр и проверяем, удовлетворяет ли она условию задачи. Если да, то выводим число на экран. Например, если запустить этот код, то на экране появятся числа 18, 45 и 72.
Павел Кочанжи
Если запустить этот код, то никакого вывода не появится вообще.
Илья /////////
ПТУшники, чем и сколько раз вам надо дать по башке, чтобы вдолбить простую мысль: все числа перебирать в таких задачах НЕ НАДО?
Похожие вопросы
- ИНФОРМАТИКА, Python, 8 класс
- Информатика, 8 класс, Python
- Информатика 8 класс/Задача на python
- Программирование 8 класс
- Информатика 11 класс СРОЧНО!!
- Какие задания из ЕГЭ по информатике можно решить вручную (без программирования)?
- 8 Тип ЕГЭ Информатика
- Лес - задача по информатике
- Товарищи. помогите пожалуйста с задачей по информатике
- Помогите разобраться в теме Классы Питон
Правда понял о чем речь - не число должно увеличится в 2 раза, а сумма цифр