Подсчитать количество чисел в заданном диапазоне куб которых оканчивается на 4 или 9
📁 python, ии
Количество чисел
На вход программе подаются два целых числа a и b (a≤b). Напишите программу, которая подсчитывает количество чисел в диапазоне от a до b включительно, куб которых оканчивается на 4 или 9.
Формат входных данных
На вход программе подаются два целых числа a и b (a≤b).
Формат выходных данных
Программа должна вывести одно целое число в соответствии с условием программы. Примечание. Куб числа aa – это его третья степень a^3a.
Sample Input 1:
110counter = 0for i in range(int(input()), int(input())): if i % 10 == 4: counter = counter + 1print(counter) else: i % 10 == 9 counter = counter + 1 print(counter) Если обратить внимание на кубы чисел, которые заканчиваются на 4 и 9, то можно увидеть закономерность - если число заканчивается на 4 или на 9, то и куб этого числа будет заканчиваться на ту же цифру:
In [81]: [(i, i**3) for i in range(70) if (i**3) % 10 in (4,9)]Out[81]: [(4, 64), (9, 729), (14, 2744), (19, 6859), (24, 13824), (29, 24389), (34, 39304), (39, 59319), (44, 85184), (49, 117649), (54, 157464), (59, 205379), (64, 262144), (69, 328509)]поэтому ответ можно получить аналитически:
def f(a, b, digit): a = a // 10 * 10 + digit b = b // 10 * 10 - (10 - digit) retu (b - a + 10) // 10def calc(a, b): retu f(a, b, 4) + f(a, b, 9)a, b = 123, 321res = calc(a, b)результат:
In [185]: resOut[185]: 40проверка:
In [186]: len([(i, i**3) for i in range(a, b+1) if (i**3) % 10 in (4,9)])Out[186]: 40 Войдите чтобы оставить ответ