Сначала банальный код - рабочий, но уже на больших числах будет переполнение переменной факториала.
var n, i, fact, ans : integer;
begin
read(n);
fact := 1;
for i := 2 to n do
fact := fact * i;
while (fact mod 10 = 0) do begin
ans := ans + 1;
fact := fact div 10;
end;
writeln(ans);
<span>end.
Теперь более "умный" код, в нём использован тот факт, что простое число p входит в разложение факториала числа N = [N/p] + [N/p^2] + [N/p^3] + ..., где [x] - целая часть числа x.
var n, i, fact, c, pow, ans : integer;
{c - сколько раз входит в разложение числа n! цифра 5}
begin
read(n);
pow := 5;
while (pow <= n) do begin
c += n div pow;
pow := pow * 5;
end;
writeln(c);
<span>end.</span></span>
Программу я не смогу написать, но примерный алгоритм дам.
Если (M = 1, 3, 5, 7, 8, 10, или 12) И (D <= 30), то (D = D + 1)
Если (M = 1, 3, 5, 7, 8, 10) И (D = 31), то (M = M + 1, D = 1)
Если (M = 12) И (D = 31), то (G = G + 1, M = 1, D = 1)
Если (M = 4, 6, 9, 11) И (D <= 29), то (D = D + 1)
Если (M = 4, 6, 9, 11) И (D = 30), то (M = M + 1, D = 1)
Если (M = 2) И (D <= 27), то (D = D + 1)
Если (M = 2) И (G mod 4 <> 0) И (D = 28), то (M = 3, D = 1)
Если (M = 2) И (G mod 4 = 0) И (D = 28), то (D = D + 1)
Если (M = 2) И (G mod 4 = 0) И (D = 29), то (M = 3, D = 1)
Если (M = 2) И (G = 1900 или 2100) И (D = 28), то (M = 3, D = 1)
В последней строчке я учёл разницу между Григорианским и Юлианским календарями.
По Юлианскому после 28.02 1900 или 2100 года наступит 29.02.
По Григорианскому наступит 01.03.
Задание 8
1.
B&(AvB) = B&A v B&B = B&A v B = B&(A v 1) = B
2.
A&(Bv!B) = A&1 = A
3.
A&(AvBvC)=A&A v A&B v A&C = A v A&B v A&C = A&(1vBvC)=A
4.
!(AvBv!C)
2 мин=120 сек.
256000*120= 30 720 000 бит. -весь объем в битах
30 720 000/8=3 840 000 Байт. - весь объем в байтах.
3 840 000/1024=3750 Кб
Ответ:3750КБ