Задача. Сколько натуральных чисел из промежутка [M,N] имеют наименьшую сумму цифр ?
Задачу также можно найти здесь.
Входные данные:
Во входном файле два числа [latex]\textrm{M}[/latex] и [latex]\textrm{N}[/latex] ([latex]1\leq \textrm{M}\leq \textrm{N}\leq 1000000[/latex]) .
Выходные данные:
В выходной файл нужно записать ответ — одно число.
Тесты
№ | M | N | Вывод |
1 | 1 | 100 | 3 |
2 | 2 | 17 | 1 |
3 | 32 | 1024 | 2 |
4 | 1 | 1000000 | 7 |
5 | 10 | 10 | 1 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class Test { static function DigitsSum(val:Int):Int{ var res:Int = 0; while (val!=0) { res +=val%10; val = Std.int(val/10); } return res; } static function main() { var m: Int = Std.int(Sys.stdin().readline()); var n: Int = Std.int(Sys.stdin().readline()); var count:Int; count = 1; var min:Int; min = DigitsSum(m); while (++m <= n) { if (min == DigitsSum(m)) { count++; } else if (min > DigitsSum(m)) { min = DigitsSum(m); count = 1; } } trace("Result " + count); } } |
Алгоритм решения
Для решения данной задачи зададим функцию, которая возвращает сумму чисел вводимого нами числа. После ввода границ необходимого промежутка присваиваем минимальную сумму[latex]\textrm{M}[/latex]. Теперь задаём цикл со счётчиком i от [latex]\textrm{M + 1}[/latex] до [latex]\leq \textrm{N}[/latex]. В случае, когда сумма чисел счётчика меньше сумме цифр числа [latex]\textrm{M}[/latex], присваиваем ей (сумме цифр счётчика i) минимальную сумму цифр и выводим единицу. В противном случае увеличиваем счётчик на единицу и выводим полученный результат. Выводимое число и будет количеством натуральных чисел на промежутке, имеющих наименьшую сумму цифр.
Код программы можно найти здесь.
— Фрагменты кода в тексте должны оформляться так sumMin, i .
— В тексте «два числа и ()» вы так накрутили, что ни $m$, ни $n$, ни ограничения не выводятся. Впрочем и во всех остальных местах, где нужны были формулы. Все, что вам нужно, это поставить знаки $ перед и после формулы в latex.