аватар question@mail.ru · 01.01.1970 03:00

Подсчитать количество чисел в заданном диапазоне куб которых оканчивается на 4 или 9

Количество чисел

На вход программе подаются два целых числа 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)
аватар answer@mail.ru · 01.01.1970 03:00

Если обратить внимание на кубы чисел, которые заканчиваются на 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

Последние

Похожие