Все приведённые ниже коды написаны и отлажены в среде PascalABC.NET 3.2. сборка 1439(10.05.2017). Сначала программа, показывающая период=))Var N:uint64; B:BigInteger:=1;BeginWrite('N = ');ReadLn(N);For var i:= 1 to N do Begin if (i mod 10 <> 5)and(i mod 10 <> 0) then B:=B*i else if i mod 10 = 5 then B:=B div 2; Write(B mod 10); if i mod 40 = 0 then WriteLn; End;End.N = 100012642242888682662644484688682224284484666264224288868266264448468868222428448466626422428886826626444846886822242844846662642242888682662644484688682224284484666264224288868266264448468868222428448466626422428886826626444846886822242844846662642242888682662644484688682224284484666264224288868266264448468868222428448466626422428886826626444846886822242844846662642242888682662644484688682224284484666264224288868266264448468868222428448466626422428886826626444846886822242844846662642242888682662644484688682224284484666264224288868266264448468868222428448466...Ну и так далее.Искомая программа:Const T = '6626422428886826626444846886822242844846';Var S:BigInteger;BeginS:=ReadString.ToBigInteger;if S > 1 then WriteLn(T[(S mod 40).ToString.ToInteger+1])else WriteLn(1)End.