Cod sursa(job #78811)

Utilizator gurneySachelarie Bogdan gurney Data 19 august 2007 20:34:00
Problema Reguli Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.33 kb
program reguli;
  const
    fin='reguli.in';
    fout='reguli.out';
  var
    a:array[1..500100] of int64;
    pi:array[1..500100] of longint;
    d,q,i,c,r,j,k,n:longint;
    t:array[0..1] of int64;
    old,new:longint;
    x,y:int64;
    s:string;
    ok:array[1..500100] of boolean;
begin
  assign(input,fin);
    reset(input);
    read(n);
    for i:=1 to n do
      begin
        readln(s);
        for j:=1 to length(s) do
          a[i]:=a[i]*(ord(s[j])-48);
      end;
    for i:=1 to n-1 do
      a[i]:=a[i+1]-a[i];
    dec(n);
  assign(output,fout);
    rewrite(output);
    k:=0;
    pi[1]:=0;
    {for q:=2 to n do
      begin
        while (k>0) and (a[k+1]<>a[q]) do
          k:=pi[k];
        if a[k+1]=a[q] then
          inc(k);
        pi[q]:=k;
      end;
    k:=n;
    while k>0 do
      begin
        ok[pi[k]]:=true;
        k:=pi[k];
      end;
    for d:=1 to n do
      begin
        c:=n div d;
        r:=n-c*d;
        if ok[r] then
        begin
          x:=n-r-pi[n-r];
          y:=(n-r) div x;
          if (x<>0) then
            if (y=(n-r)/x)and(y=c) then
              begin
                writeln(d);
                for i:=1 to d do
                  writeln(a[i]);
                break;
              end;
        end;
      end;}
  close(output);
end.