Умничка и мой гуру
void_sp предложил очень клевый вариант решения. Возможно его до этого предлагали Костя и Нюкем, в таком случае им не удалось его мне грамотно обьяснить.
Толчком к выводу алгоритма послужило известное количество итоговых чисел-511. 2 в 9й минус число ноль. Если б мы лучше изучали комбинаторику, мы бы его сразу вывели, а не воспользовались аутпутом дописаной проги. Суть алгоритма воида:крутим цикл от 1 до 511. Каждое число в двоичной форме будет представлять собой индикатор-уникальную комбинацию нулей и единиц в 9 разрядах. Соответственно, на каждом шаге цикла имеем уникальную комбинацию номеров разрядов, в которых, скажем, единицы. Остается закрутить второй цикл 1..9 в котором парсить последний разряд, в случае единицы писать в сумму значение счетчика, и затем делать сдвиг вправо. В результате имеем очень простой алгоритм по отношению к первоначальному, однако, за счет парсинга получается 4599 всего итераций, против 511 вначале. Ну да фигня, зато там рекурсия и тупняк