Во время выполнения алгоритма сменяются следующие значения: a=5 b=4 b=80 a=25 ответ: a=25
nikolavlad
30.09.2020
Заметим, что число нулей в записи числа = максимальная степень десятки, на которую делится число = минимальная из степеней двойки и пятерки, входящих в разложение на простые множители этого числа. [ первое равенство очевидно, второе можно доказать от противного] например, 7500 имеет на конце 2 нуля: 7500 = 2^2 * 3 * 5^4 - минимальная из степеней двойки и пятерки как раз 2. в разложении числа n! на простые множители пятерок всегда не больше, чем двоек: если в выражении n! =1*2*3**n есть множитель вида m*5^k, то есть и множитель m*2^k - хотя бы потому, что второе число меньше первого, а факториал - это произведение всех чисел меньше заданного. поэтому при разложении на простые множители степень двойки хотя бы степень двойки. используя наблюдение из первого параграфа, получаем: число нулей в конце десятичной записи числа n! совпадает с числом пятерок в разложении числа n! на простые множители. остается найти число пятерок в разложении. проще всего это понять на примере. 26! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 * 25 * 26 число чисел, делящихся на 5, среди первых 26 чисел равно пяти (это 5, 10, 15, 20, 25). это число можно найти, округлив вниз результат от деления 26/5. если подумать, можно понять, что в разложении 26! на простые множители 5 встретится не 5 раз - мы забыли учесть число 25, которое даст не одну пятерку, а две. и вообще, в ответ сомножитель что-то*5^n будут давать n пятерок. итого ответ для произвольного n: [n/5] + [n/5^2] + [n/5^3] + алгоритм: c = 0 пока [n/5] > 0: увеличиваем c на [n/5] n = [n/5] вывод c питон-3: n = int( c = 0 while n//5 > 0: c += (n//5) n = n//5 print(c)
diana8
30.09.2020
Var a, b, i, j, found: integer; begin readln(a, b); for i : = a to b do begin found : = 1; for j : = 2 to round(sqrt(i + 1)) do begin found : = found * (i mod j); if found = 0 then break; end; if found < > 0 then write(i, ' '); end; end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Определите значение переменной после выполнения алгоритма: a: =5 b: =4 b: =100-a*b a: =b/16*a