Все приведённые ниже коды написаны и отлажены в среде PascalABC.NET 3.2. сборка 1439(10.05.2017).
Сначала программа, показывающая период=))
Var N:uint64; B:BigInteger:=1; Begin Write('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 = 1000 1264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 6264224288868266264448468868222428448466 ... Ну и так далее.
Искомая программа:
Const T = '6626422428886826626444846886822242844846'; Var S:BigInteger; Begin S:=ReadString.ToBigInteger; if S > 1 then WriteLn(T[(S mod 40).ToString.ToInteger+1]) else WriteLn(1) End.
Сначала программа, показывающая период=))
Var
N:uint64;
B:BigInteger:=1;
Begin
Write('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 = 1000
1264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
6264224288868266264448468868222428448466
...
Ну и так далее.
Искомая программа:
Const
T = '6626422428886826626444846886822242844846';
Var
S:BigInteger;
Begin
S:=ReadString.ToBigInteger;
if S > 1 then WriteLn(T[(S mod 40).ToString.ToInteger+1])
else WriteLn(1)
End.