Задание из Предпрофисиональной олимпиады задача такова в питоне нужго написать программу в которой нужно найти количество тридцати значных чисел делящихся на сто. почему эта программа не считает:
a = 0
for i in range(100000000000000000000000000000, 999999999999999999999999999999):
if i % 100==0:
a+=1
print(a)

13 Ноя 2024 в 19:40
36 +1
0
Ответы
1

Ваша программа не работает корректно из-за того, что диапазон, который вы используете в функции range, слишком большой и выходит за пределы возможностей Python для вычисления. Python поддерживает большие числа, но создание диапазонов для очень больших значений может занять много времени и ресурсов.

В данном случае, для нахождения количества 30-значных чисел, кратных 100, можно использовать более эффективный подход:

Определить минимальное и максимальное 30-значное число.Вычислить количество чисел, кратных 100, в этом диапазоне.

Числа, кратные 100, заканчиваются на 00. Поэтому минимальное 30-значное число, делящееся на 100, равно 102910^{29}1029, а максимальное 30-значное число, делящееся на 100, равно 1030−110^{30} - 110301 и оно также делится на 100.

Вот как может выглядеть код для данной задачи:

# Минимальное 30-значное число
min_value = 10**29
# Максимальное 30-значное число
max_value = 10**30 - 1
# Находим количество 30-значных чисел, делящихся на 100
# Делаем это, найдя количество чисел от min_value до max_value, которые делятся на 100.
# Для этого находим, сколько таких чисел есть от 0 до max_value и от 0 до min_value.
count = maxvalue//100max_value // 100maxv alue//100 - minvalue//100min_value // 100minv alue//100 + 1
printcountcountcount

Этот код вычисляет количество 30-значных чисел, кратных 100, и выполняется значительно быстрее, чем попытка пройтись по всему диапазону значений.

13 Ноя 2024 в 19:46
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир