Прочее компьютерное

Напишіть програму? Дуже надо

Напишіть програму, яка шукатиме (шляхом перебору) кількість розв'язків на проміжку [a; b] рівняння
k×f(n)=n,
де f(n) — сума квадратів цифр у десятковому записі числа n.
Формат вхідних даних. Єдиний рядок містить три розділених пробілами цілі числа, у порядку k a b. Гарантовано a≤b, а також, що усі ці числа не менші 1 й не більші 1018.
Формат результату. Програма повинна вивести єдине число — кількість таких n з проміжку a≤n≤b, що задовольняють рівняння.
Примеры
Входные данныеРезультат работы
51 5000 10000
3
Примечания
Цими трьома розв'язками є 7293, 7854 та 7905.
Наприклад, 7293 є розв'язком, бо 51×(72+22+92+32) = 51×(49+4+81+9) = 51×143 = 7293.
Але нічого цього виводити не треба, треба лише кількість розв'язків.
Во-первых не указан язык программирования, так что получите ответ на VBA. Проверенно в Excell - работает. Во-вторых, исходные данные в решении записываются через запятую, а не через пробел, как в задании. Не сможете преодолеть эту проблему - не занимайте чужое место в институте (если я правильно понял, что вы студент).
Function KAB(K As Integer, A As Integer, B As Integer) As Integer
Dim I As Integer
Dim S As Integer
Application.EnableCancelKey = xlInterrupt

S = 0
For I = A To B

If K * SumKv(I) = I Then S = S + 1
Next I
KAB = S
End Function

Function SumKv(ByVal N As Integer) As Integer

Dim M As Integer
Dim I As Integer
Dim S As Integer
Dim Num As Integer
Dim Ch As Integer

Num = N
'определяем разрядность числа
M = 0
Do Until N = 0
M = M + 1
N = N \ 10 'целочисленное деление на 10
Loop
' М - число разрядов
S = 0
For I = M - 1 To 0 Step -1
Ch = Int(Num \ 10 ^ I) 'получаем цифру очередного разряда (начиная от старшего)
S = S + Ch ^ 2 ' добавляем его квадрат в сумму
Num = Num - Ch * 10 ^ I 'убираем старший разряд из исходного числа
Next I
SumKv = S
End Function

Sub Result() ' это для проверки
MsgBox KAB(51, 5000, 10000)
End Sub
Алихан Бокейхан
Алихан Бокейхан
835
Лучший ответ
Алихан Бокейхан Код далёк от совершенства, но зато преподаватель легче поверит, что это сделали Вы, а не профи...
Больше времени уйдет, что бы разобрать твою мову, нежели программу писать. Будь вежлив и учтив, ты на Российской ресурсе, пиши на русском, всем понятно будет.
Анатолий Чушев
Анатолий Чушев
41 629