n= №1357
-- опред кол-ва цифр
цикл
n1 = 10 0-9
n2 = 9*9 +n1 10-99
n3 = 9*9*8 +n2 100-999
n4 = 9*9*8*7 +n3 1000-9999
n5 = 9*9*8*7*6 +n3 10000-99999
определили ближ меньшее nX - мы знаем сколько цифр
m1=n-nX - сколько неповтор. чисел X цифр
определим 1 цифру (например из 5 цифр)
для 1 9*8*7*6
для 2 9*8*7*6+для 1
для 3 9*8*7*6+для 2
т.е. m1 берем по модулю 9!/5! - определили 1 цифру
для нее получили m2=m1- (9!/5!*(цифра -1)
для второй цифры (и далее немного меняя формулу)
для 1 9*8*7
для 2 9*8*7+для 1
для 3 9*8*7+для 2
для нее получили m3=m2- (9!/6!*(цифра2 -1)
Вот такой алгоритм приблизительно
__________________
В программировании главное - это пиво
Последний раз редактировалось lalexa100; 16.03.2005 в 17:00.
|