Число з трёх разных цифр отняли от числа,что получается с этих самых цифр, перемешанных в обратном порядке. результат получается с этих самых трёх цифр, перемешанных снова по-другому. найди и напиши эти числа.
Любое трехзначное число вида "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
Для того, чтобы эта программа заработала надо добавить перед описанием процедуры F следующую строчку: procedure G(n: integer);forward; Так как в процедуре F есть вызов процедуры G описанной дальше по тексту программы. После исправления кода и запуска программы с F(12) получим 17 звездочек. По шагам это будет выглядеть так:
Вызов процедуры F и выполнение * n = 12 * n = 12 Вызов процедуры G и выполнение * n = 11 * n = 11 Вызов процедуры F и выполнение * n = 9 * n = 9 Вызов процедуры G и выполнение * n = 8 * n = 8 Вызов процедуры Fи выполнение * n = 6 * n = 6 Вызов процедуры G и выполнение * n = 5 * n = 5 Вызов процедуры F и выполнение * n = 3 * n = 3 Вызов процедуры G и выполнение * n = 2 * n = 2 Вызов процедуры F и выполнение * n = 0
var a,n,i,j,s:integer; begin writeln('Введите количество цифр в числе'); readln(n); for i:=1 to n do begin writeln('Введите ',i,' цифру из ',n); readln(a); for j:=1 to n-i do a:=a*10; s:=s+a; end; writeln('Натуральное число: ',s); end.
Тестовое решение
Введите количество цифр в числе 5 Введите 1 цифру из 5 9 Введите 2 цифру из 5 2 Введите 3 цифру из 5 7 Введите 4 цифру из 5 3 Введите 5 цифру из 5 1 Натуральное число: 92731
Решение №2 Если очень надо использовать массив (хотя на мой взгляд совсем не нужно)
//PascalABC.NET (версия 3.1, сборка 1198) var a,n,i,j,s:integer; mas:array[1..10]of integer; begin writeln('Введите количество цифр в числе'); readln(n); for i:=1 to n do begin writeln('Введите ',i,' цифру из ',n); readln(mas[i]); a:=mas[i]; for j:=1 to n-i do a:=a*10; s:=s+a; end; writeln('Натуральное число: ',s); end.
Тестовое решение
Введите количество цифр в числе 5 Введите 1 цифру из 5 5 Введите 2 цифру из 5 4 Введите 3 цифру из 5 3 Введите 4 цифру из 5 2 Введите 5 цифру из 5 2 Натуральное число: 54322
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