Как исключить возможность дублирования записей в таблице? а) объединить ячейки б) определить ключевое поле в) переименовать поле г) упорядочить записи по алфавиту
Все приведённые ниже коды написаны и отлажены в среде 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.
// PascalABC.NET 3.2, сборка 1437 от 03.05.2017 // Внимание! Если программа не работает, обновите версию!
type tField=(char,integer);
function GetNewField(oldfld:tField;x,y:integer;var newfld:tField):boolean; begin Result:=true; var xo:=oldfld[0]; case xo.ToLower of 'a': case x of -2,-1:Result:=false; 1:newfld:=(Succ(xo),0); 2:newfld:=(Succ(Succ(xo)),0) end; 'b': case x of -2:Result:=false; -1:newfld:=(Pred(xo),0); 1:newfld:=(Succ(xo),0); 2:newfld:=(Succ(Succ(xo)),0) end; 'g': case x of -2:newfld:=(Pred(Pred(xo)),0); -1:newfld:=(Pred(xo),0); 1:newfld:=(Succ(xo),0); 2:Result:=false end; 'h': case x of -2:newfld:=(Pred(Pred(xo)),0); -1:newfld:=(Pred(xo),0); 1,2:Result:=false end; else case x of -2:newfld:=(Pred(Pred(xo)),0); -1:newfld:=(Pred(xo),0); 1:newfld:=(Succ(xo),0); 2:newfld:=(Succ(Succ(xo)),0) end end; if Result=true then begin var yo:=oldfld[1]; case yo of 1: case y of -2,-1:Result:=false; else newfld:=(newfld[0],yo+y); end; 2: case y of -2:Result:=false; else newfld:=(newfld[0],yo+y); end; 7: case y of -2,-1,1:newfld:=(newfld[0],yo+y); 2:Result:=false end; 8: case y of -2,-1:newfld:=(newfld[0],yo+y); 1,2:Result:=false end else newfld:=(newfld[0],yo+y); end end end;
begin var ax:=Arr(-2,-1,1,2); var ay:=ax; var s:=ReadlnString('Укажите клетку, на которой стоит конь'); var f1,f2:tField; f1:=(s[1],s[2].ToDigit); foreach var x in ax do foreach var y in ay do if abs(x)+abs(y)=3 then if GetNewField(f1,x,y,f2) then Print(f2[0]+f2[1]); Writeln end.
Примеры Укажите клетку, на которой стоит конь b1 a3 c3 d2
Укажите клетку, на которой стоит конь C5 A4 A6 B3 B7 D3 D7 E4 E6
определить ключевое слово
Объяснение: