Ну вообще не понимаю как решить данную задачу (наверное она на метод включения-исключения).
Условие очень просто : Найти количество натуральных чисел до 10^N с суммой цифр меньших равных 22 и делящихся на 22. Ну давайте такие числа назовём счастливыми :P
Может есть какая то закономерность? Ну число делится на 22 если последняя цифра {0,2,4,6,8} и сумма цифр на нечетных местах равная сумме на четных.
А да еще числа до 10^18 тобеш N = 18, Час 1 cекунда, может ето что то разрулит :(
Ну и еще примерчик:
N = 2
Ответ: 4 => { 22,44,66,88 }
Нужно идти с другого конца.
Т.е. не генерировать числа, а пересчитать возможные расклады цифр, составляющих нужные числа.
Приведу пример для чисел до 10000 и одной произвольно выбранной суммы:
Для суммы цифр 3(mod 11), т.е. 3 и 14, возможны 9 вариантов комбинаций первой и третьей цифры (S14: (95 86 77 68 59) S3: (30 21 12 03)) и 4 варианта комбинаций второй и четвёртой цифры (S14: (86 58) S3: (30 12)).
Сумме цифр в пределах 22 удовлетворяют чередующиеся комбинации,выбранные из S3/S3, S3/S14 и S14/S3, но не S14/S14, так что получается 5x2+4x2+4x2= 26 чисел, делящихся на 22, суммы чередующихся цифр которых равны 3 или 14, и сумма цифр не превосходит 22 (пример - 5390=22*245)
Ясно, что число меньше 10^N имеет количество цифр не больше N
Вам не нужно заморачиваться с большими числами. Тем более, что никуда не поместите эти числа, если допустим N>20
Обьявите количество чисел удовлетворяющих задаче unsigned answer = 0;
Создайте массив unsigned number[N] = {0}; нулей.
И в цикле, пока не достигнете начала массива прибавляйте последним двум элементам 2, остаток от 10 записываем, а целую часть прибавляем к предыдущему элементу , пока он меньше чем 10(ну как на бумаге суммируете число и 22)
Проверяете, если сумма элементов меньше 22, то ++answer
Когда первый элемент массива перестанет быть однозначным числом, answer будет ваш ответ.
P.S. С таким альгоритмом ваш код будет работать очень быстро даже при трехзначном значении N. А если вам знаком std::valarray, то задача решится проще и быстрее, поскольку он оптимизирован именно для числовых методов
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости