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 30 31 32 | CLS DIM s AS STRING , dl AS INTEGER , s2 AS STRING DIM n AS INTEGER , st AS INTEGER , f AS INTEGER again: INPUT "Vvedite nomer chisla : ", n IF n < 1 GOTO again s = " 137 " ' Наш шаблон dl = LEN(s) ' Длина шаблона( 3 симв.) st = 1 ' Степень WHILE n > dl ^ st n = n - dl ^ st ' вычитаем из n кол-во вмещаемых эл-в в множестве 'sum = sum + dl ^ st ' Отладочная строка st = st + 1 PRINT "n ="; n, "sum ="; sum, "st ="; st WEND ' Вследствии данного расчета мы имеем: ' st - количество выводимых знаков числа ' n - номер числа в подмножестве этих знаков ' sum - кол-во комбинаций во всех подмножествах ' вмещаемых в число до номера n PRINT "n : "; n PRINT STRING $( 80 , CHR$( 196 )) FOR i = 1 TO st ' Перевод в троичную систему ' f - это троичный символ f = ((n - 1 ) \ dl ^ (i - 1 )) MOD dl ' выборка из шаблона '( f + 1 ) - это номер в строке шаблоне ' т.к. номер начинается с единицы s2 = MID$(s, f + 1 , 1 ) + s2 'PRINT f; ' Отладочная строка NEXT PRINT s2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | CLS : DEFINT A-Z DIM s AS STRING , s2 AS STRING again: INPUT "Vvedite nomer chisla : ", n IF n < 1 GOTO again s = " 137 " ' Наш шаблон dl = LEN(s) ' Длина шаблона( 3 симв.) st = 1 ' Степень WHILE n > dl ^ st n = n - dl ^ st ' вычитаем из n кол-во вмещаемых эл-в в множестве st = st + 1 WEND FOR i = 1 TO st f = ((n - 1 ) \ dl ^ (i - 1 )) MOD dl s2 = MID$(s, f + 1 , 1 ) + s2 NEXT PRINT s2 |
Тестирование выполнено в программе QB64 ( Скачать )