Любое трехзначное число вида "abc" можно представить как выражение 100a+10b+c Тогда: 100a+10b+c - 100c+10b+a
99(a-c) Значение, равное 99(a-c), равно трехзначному числу, составленному из тех же самых цифр a, b, c. Три цифры можно расставить шестью но два из них мы уже использовали, поэтому остается проверить четыре остальные расстановки, что и делает приведенная программа. qBASIC CLS FOR a = 1 TO 9 FOR b = 0 TO 9 FOR c = a - 1 TO 1 STEP -1 k = 99 * (a - c) k2 = 100 * a + 10 * c + b k3 = 100 * c + 10 * a + b k4 = 100 * b + 10 * a + c k5 = 100 * b + 10 * c + a IF k = k2 OR k = k3 OR k = k4 OR k = k5 THEN PRINT a; b; c; " - "; c; b; a; " = "; k END IF NEXT c NEXT b NEXT a Результат выполнения программы: 9 5 4 - 4 5 9 = 495
var i: word; //Было предпочтительнее использовать byte, //ведь от 3 до 7 считаем, но тип word старее, //а к byte могут придраться
begin SetBrushColor(clBlue); //Проставляем цвет кисти, я не //нашёл функции рисования круга, //где можно было бы указать цвет for i := 3 to 7 do begin FillCircle(200, 200, 10 * i); //Рисуем круг, радиус от 30 до 70 sleep(500); //Поскольку круги в конечном счёте всё равно //затираются более большими, будем выводить //с задержкой end; end.
100a+10b+c
Тогда:
100a+10b+c
-
100c+10b+a
99(a-c)
Значение, равное 99(a-c), равно трехзначному числу, составленному из тех же самых цифр a, b, c. Три цифры можно расставить шестью но два из них мы уже использовали, поэтому остается проверить четыре остальные расстановки, что и делает приведенная программа.
qBASIC
CLS
FOR a = 1 TO 9
FOR b = 0 TO 9
FOR c = a - 1 TO 1 STEP -1
k = 99 * (a - c)
k2 = 100 * a + 10 * c + b
k3 = 100 * c + 10 * a + b
k4 = 100 * b + 10 * a + c
k5 = 100 * b + 10 * c + a
IF k = k2 OR k = k3 OR k = k4 OR k = k5 THEN
PRINT a; b; c; " - "; c; b; a; " = "; k
END IF
NEXT c
NEXT b
NEXT a
Результат выполнения программы:
9 5 4 - 4 5 9 = 495