Задание из Предпрофисиональной олимпиады задача такова в питоне нужго написать программу в которой нужно найти количество тридцати значных чисел делящихся на сто. почему эта программа не считает: a = 0 for i in range(100000000000000000000000000000, 999999999999999999999999999999): if i % 100==0: a+=1 print(a)
Ваша программа не работает корректно из-за того, что диапазон, который вы используете в функции range, слишком большой и выходит за пределы возможностей Python для вычисления. Python поддерживает большие числа, но создание диапазонов для очень больших значений может занять много времени и ресурсов.
В данном случае, для нахождения количества 30-значных чисел, кратных 100, можно использовать более эффективный подход:
Определить минимальное и максимальное 30-значное число.Вычислить количество чисел, кратных 100, в этом диапазоне.
Числа, кратные 100, заканчиваются на 00. Поэтому минимальное 30-значное число, делящееся на 100, равно (10^{29}), а максимальное 30-значное число, делящееся на 100, равно (10^{30} - 1) и оно также делится на 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 = (max_value // 100) - (min_value // 100) + 1 print(count)
Этот код вычисляет количество 30-значных чисел, кратных 100, и выполняется значительно быстрее, чем попытка пройтись по всему диапазону значений.
Ваша программа не работает корректно из-за того, что диапазон, который вы используете в функции range, слишком большой и выходит за пределы возможностей Python для вычисления. Python поддерживает большие числа, но создание диапазонов для очень больших значений может занять много времени и ресурсов.
В данном случае, для нахождения количества 30-значных чисел, кратных 100, можно использовать более эффективный подход:
Определить минимальное и максимальное 30-значное число.Вычислить количество чисел, кратных 100, в этом диапазоне.Числа, кратные 100, заканчиваются на 00. Поэтому минимальное 30-значное число, делящееся на 100, равно (10^{29}), а максимальное 30-значное число, делящееся на 100, равно (10^{30} - 1) и оно также делится на 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 = (max_value // 100) - (min_value // 100) + 1
print(count)
Этот код вычисляет количество 30-значных чисел, кратных 100, и выполняется значительно быстрее, чем попытка пройтись по всему диапазону значений.