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

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

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

Тестирование выполнено в программе QB64 ( Скачать )

Leave a Comment