Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.05 KB | None | 0 0
  1. program ExrF_ChangePolynom;
  2.  
  3. var
  4.   i, n, k: integer;
  5.   p: uint64;
  6.   index: array of uint64;
  7.   buf: uint64;
  8. begin
  9.   Assign(Input, 'input.txt');
  10.   Assign(Output, 'output.txt');
  11.   reset(Input);
  12.   rewrite(output);
  13.   readln(p, n);
  14.   SetLength(index, n + 1);
  15.   for i := 0 to n do begin
  16.     Read(index[i]);
  17.     index[i]:=index[i] mod p;
  18.   end;
  19.   for k := 1 to n do
  20.   begin
  21.     buf := index[k];
  22.     for i := k downto 1 do
  23.     begin
  24.       if i = k then begin
  25.         if -index[i - 1] * buf <0 then
  26.         index[i] :=p-( index[i - 1] * buf )mod p
  27.         else
  28.         index[i]:= (-index[i - 1] * buf) mod p;
  29.       end
  30.       else
  31.       begin
  32.         if index[i] < buf * index[i - 1] then
  33.         index[i] := p-(-(index[i] - buf * index[i - 1]))mod p
  34.         else
  35.         index[i]:= (index[i] - buf * index[i - 1]) mod p;
  36.       end;
  37.     //  if index[i]<0 then
  38.     //  begin
  39.     //  index[i]:=p-(-index[i] mod p)
  40.     //  end
  41.     //  else index[i]:=index[i] mod p;
  42.     //end;
  43.     end;
  44.   end;
  45.   for i := n downto 0 do
  46.     Writeln(index[i]);
  47. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement