Для регистрации на некотором сайте пользователю требуется придумать пароль. Длина пароля – 8 символов. В качестве символов используются десятичные цифры и 6 латинских букв (регистр буквы не имеет значение!). Определите объём памяти, который занимает хранение 1000 паролей
Обозначим уменьшаемое как abc. Тогда нужное нам число - это cba, где c, a, b = {0,1,2,3,4,5,6,7,8,9}
По условию, abc - cba = xyz (*), где x, y, z = {a,b,c}. Заметим, что abc - cba > 0, и, следовательно, a > c, т.е. c < 9 (**)
Из (*) получим уравнения для вычитаний из младшего, среднего и старшего разрядов соответственно (A):
10 + c - a = z (заняли "1" из среднего разряда) (A.1)
10 + (b - 1) - b = 9 при любом b (заняли "1" из старшего разряда)
a - 1 - c = x (A.2)
Уравнение (*) приобретает вид:
abc - cba = x9z (***)
Но y = 9 не может быть цифрой c, поскольку c < 9 согласно (**). Следовательно, возможными комбинациями x,z будут: (x,z) = {(a,c),(c,a),(b,c),(c,b)}.
Рассмотрим систему уравнений (A) для всех возможных случаев:
1: x = a или b, z = c.
(A.1): 10 + c - a = c => a = 10 - противоречие (должно быть a < 10).
2: x = c, z = a.
(A.1), (A.2): 10 + c - a = a, a - 1 - c = c => 10 + c = 2*(2c + 1), a = 2c + 1 => 8 = 3c, a = 2c + 1 => c = 8/3 - противоречие (c должно быть целым числом).
3: x = c, z = b.
(A.1), (A.2): 10 + c - a = b, a - 1 - c = c => 10 + c - (2c + 1) = b, a = 2c + 1 => 9 - c = b, a = 2c + 1 => Для всех возможных c: c = {0,1,2,3,4} получим соответствующие им значения a и b. (a,b,c) = {(1,9,0),(3,8,1),(5,7,2),(7,6,3),(9,5,4)}. Подстановкой в (***) получим единственно возможное решение: (a,b,c) = (9,5,4), т.е a = 9, b = 5, c = 4.
Итак, нужное нам число это cba = 459, другие два - 954 и 495 соответственно.
Проверка: 954 - 459 = 495.
Напишите АЯ алгоритм вычисления у по формуле у=(1-х2+5х4)2(степень), где х- заданное число. Учтите следующие ограничения:
1) в арифмитических выражения можно использовать только операции сложения, вычитания и умножения. 2) Каждое выражение может содержать только одну арифметическую операцию. Выполните трассировку алгоритма при х= 2.
у(х) = (1 - х^2 + 5*х^4)^2 - я правильно записал выражение используйте знаки умножения "*" и возведения в степень "^" при записи выражений!
Пусть запись // означает, что последующая часть строки является комментарием.
С учетом ограничений (1) и (2), алгоритм может выглядеть следующим образом:
1. Вычислить tmp1 = х*х // tmp1 = х^2
2. Вычислить tmp2 = tmp1*tmp1 // tmp2 = х^4
3. Вычислить tmp2 = 5*tmp2 // tmp2 = 5*х^4
4. Вычислить tmp1 = 1 - tmp1 // tmp1 = 1 - x^2
5. Вычислить tmp1 = tmp1 + tmp2 // tmp1 = 1 - x^2 + 5*х^4
6. Вычислить y = tmp1*tmp1 // y = (1 - x^2 + 5*х^4)^2
При x = 2 получим:
1. Вычислить tmp1 = 2*2 = 4 // tmp1 = 4
2. Вычислить tmp2 = 4*4 = 16 // tmp2 = 16
3. Вычислить tmp2 = 5*16 = 80 // tmp2 = 80
4. Вычислить tmp1 = 1 - 4 = -3 // tmp1 = -3
5. Вычислить tmp1 = -3 + 80 = 77 // tmp1 = 77
6. Вычислить y = 77*77 = 5929 // y = 5929
Вычислим у(х) при х = 2: y(2) = (1 - 2^2 + 5*2^4)^2 = (1 - 4 - 5*16)^2 = 5929. Т.е. наш алгоритм дает верный результат при х = 2.