Последовательность натуральных чисел, в записи которых используются только цифры 1,3,7.1,3,7,11,13,17,1,33,37,…по номеру места вывести данное число. Например 10 место, число 71.- QBasic(Бейсик)

 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
 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 ( Скачать )

Leave a Comment