Для заданного натурального числа N, не превосходящего 30000, требуется найти ближайшее к нему двоякое число (если таких чисел два — любое из них)
Категория: Basic
2011-11-01 14:20:02
Натуральное число называется двояким, если в его десятичной записи встречается не более двух различных цифр. Например, числа 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
автор:
Поделиться: