Допоможіть розв'язати задачу. Python.
Задано число К. Напишіть програму, яка обчислить суму всіх чотирицифрових чисел кратних К. Постарайтеся написати програму без використання умовного оператора
Тест
1000
Відповідь
45000
Тест
9999
Відповідь
9999
Ответы
Ответ:
K = int(input())
a1 = 1000 + (K - 1000 % K) % K
an = 9999 - 9999 % K
print((a1 + an) * ((an - a1) // K + 1) // 2)
Объяснение:
Числа, кратные K, можно представить в виде . Тогда , то есть эти числа составляют арифметическую прогрессию с разностью K. Одна из формул суммы арифметической прогрессии: . Необходимо узнать первое, последнее число (среди четырёхзначных) и их количество.
Первое число не меньше 1000. При делении на K 1000 даёт некоторый остаток r в диапазоне [0, K-1]. Тогда наименьшее искомое четырёхзначное число будет больше 1000 на K - r либо 1000 сама будет являться числом, кратным K. В последнем случае r = 0, K - r = K. Чтобы не прибавлять лишнего, достаточно взять остаток от K - r по K. Это не повлияет на значение K - r в остальных случаях, но обеспечит 0 при r = 0.
Последнее число не больше 9999. При делении на K 9999 даёт некоторый остаток p в диапазоне [0, K-1]. Наибольшее искомое четырёхзначное число будет меньше 9999 на p либо 9999 и будет этим числом. В данном случае ситуация p = K попросту невозможна, поэтому дополнительно брать остаток не придётся.
Положим первое и последнее четырёхзначное число, как a₁ и aₙ. Тогда они связаны соотношением . Подставив вычисленный n в формулу для суммы, получим нужный ответ.