Напишіть програму, яка шукатиме (шляхом перебору) кількість розв'язків на проміжку [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
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
Алихан Бокейхан
Код далёк от совершенства, но зато преподаватель легче поверит, что это сделали Вы, а не профи...
Больше времени уйдет, что бы разобрать твою мову, нежели программу писать. Будь вежлив и учтив, ты на Российской ресурсе, пиши на русском, всем понятно будет.
Похожие вопросы
- где скачать програму по созданию слайд шоу с музыкой подскажите плиззззз оч срочно надо!
- способен ли очень длинный пароль уберечь от взлома в контакте,или сущевствуют програмы автоматического взлома
- через какие програму можно перевести файл из word в pdf формат?
- Высокий уровень ЦП из за програмы WInlogon.exe
- Подскажите програму для записи экрана под слабеньки пк
- меня интересует вопрос разница между 8 битами в одном байте и 32 или 64 битными програмами.
- Народ где можна скачать програму Word только что бы без лишних проблем
- Чем заменить NERO? Посоветуйте хорошую бесплатную програму с аналогичными возможностями!
- Скажите как удалить програму полность без остатка?
- Правда ли то что антивирусная програма Касперского и спамы "жрут"проц(жёсткий диск)?