TransWikia.com

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

Stack Overflow на русском Asked by gipoteza iz gaza on January 16, 2021

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

На вход программе подаются два целых числа a и b (a≤b). Напишите программу, которая подсчитывает количество чисел в диапазоне от a до b включительно, куб которых оканчивается на 4 или 9.

Формат входных данных

На вход программе подаются два целых числа a и b (a≤b).

Формат выходных данных

Программа должна вывести одно целое число в соответствии с условием программы.
Примечание. Куб числа aa – это его третья степень a^3a.

Sample Input 1:

1
10

counter = 0
for i in range(int(input()), int(input())):
    if i % 10 == 4:
        counter = counter + 1
print(counter)
    else:
        i % 10 == 9
        counter = counter + 1
        print(counter)

2 Answers

Если обратить внимание на кубы чисел, которые заканчиваются на 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)
    return (b - a + 10) // 10

def calc(a, b):
    return f(a, b, 4) + f(a, b, 9)

a, b = 123, 321

res = calc(a, b)

результат:

In [185]: res
Out[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


Correct answer by MaxU on January 16, 2021

Пояснения насчет кубов: 3 в кубе= 27, оканчивается на семь; 4 в кубе= 64, оканчивается на 4 - подходит нам по условию задачи. Нам надо "выловить" эту конечную цифру числа, проверить (вдруг она является 4-кой или 9-кой) и подсчитать количество таких случаев в заданном диапазоне.

Вот кубы первых 9 чисел (можете сами себе такой цикл составить, чтобы на них посмотреть и лучше понять, что просят сделать):

1**3 = 1
2**3 = 8
3**3 = 27
4**3 = 64
5**3 = 125
6**3 = 216
7**3 = 343
8**3 = 512
9**3 = 729

Answered by Егор on January 16, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP