Для начала стоит понять, что делает программа. При выполнении данного алгоритма из числа х пошагово выделяется последний разряд (последняя цифра числа х) и данная цифра суммируется к числу b. Число а содержит количество разрядов (количество цифр) в числе х. Задача: получить a = 3, b = 7 Для этого необходимо взять трехзначное число, сумма цифр которого равна 7, наименьшее подходящее число - 106 (Число должно быть трехзначное - значит меньше 100 оно быть не может, но оно должно быть как можно ближе к 100, поэтому, например, число 115 не подойдет, т.к. по заданию нужно указать наименьшее из подходящих чисел, т.е. 106).
1)
Function check7(a As Range) As Integer
Dim r As Range
Dim i As Integer
For Each r In a
i = i + 1 - Sgn((Abs(r) + 3) Mod 10)
Next
check7 = i
End Function
Excel VBA
2)
А что здесь программировать-то?
Задача сводится к с следующей: Дано два ящика и 7 мячиков. Сколькими можно разместить эти 7 мячиков в этих двух ящиках?
Бросаем все мячики в первый ящик (это первое размещение), затем перекладываем по одному мячика из первого ящика во второй.
Получаем варианты:
7|0
6|1
5|2
4|3
3|4
2|5
1|6
Итого 7 вариантов (варианта 0|7 быть не может, поскольку двузначное число с нуля не начинается).
В общем-то и без вычислений всем очевидно, что разместить 7 мячиков в двух ящиков ровно 7.
Что должна вычислять программа?
Задача: получить a = 3, b = 7
Для этого необходимо взять трехзначное число, сумма цифр которого равна 7, наименьшее подходящее число - 106 (Число должно быть трехзначное - значит меньше 100 оно быть не может, но оно должно быть как можно ближе к 100, поэтому, например, число 115 не подойдет, т.к. по заданию нужно указать наименьшее из подходящих чисел, т.е. 106).