Для заданного натурального числа N, не превосходящего 30000, требуется найти ближайшее к нему двоякое число (если таких чисел два — любое из них)

Натуральное число называется двояким, если в его десятичной записи встречается не более двух различных цифр. Например, числа 3, 23, 33, 100, 12121 — двоякие, а числа 123 и 9980 — нет.

code: #basic
 CLS
 INPUT "vvedite chislo ", n
 n1 = n
 n2 = n
 DO
 n1 = n1 + 1
 m1 = n1
 k = 0
 t = 1
 DO
 k = k + 1
 a(k) = m1 MOD 10
 m1 = m1 \ 10
 LOOP UNTIL m1 = 0
 FOR i = 1 TO k
 FOR j = 2 TO k
 IF a(j) > a(j - 1) THEN SWAP a(j), a(j - 1)
 NEXT
 NEXT
 FOR i = 2 TO k
 IF a(i) <> a(i - 1) THEN t = t + 1
 NEXT
 IF t < 3 THEN rez1 = n1
 LOOP UNTIL t < 3
 DO
 n2 = n2 - 1
 m2 = n2
 k = 0
 t = 1
 DO
 k = k + 1
 a(k) = m2 MOD 10
 m2 = m2 \ 10
 LOOP UNTIL m2 = 0
 FOR i = 1 TO k
 FOR j = 2 TO k
 IF a(j) > a(j - 1) THEN SWAP a(j), a(j - 1)
 NEXT
 NEXT
 FOR i = 2 TO k
 IF a(i) <> a(i - 1) THEN t = t + 1
 NEXT
 IF t < 3 THEN rez2 = n2
 LOOP UNTIL (t < 3) OR (n2 = 0)
 IF ABS(rez2 - n) < ABS(rez1 - n) THEN PRINT rez2 ELSE IF ABS(rez2 - n) > ABS(rez1 - n) THEN PRINT rez1 ELSE PRINT rez1, rez2

автор:

Поделиться:

Похожие статьи: