比赛 20141105 评测结果 AAAWWWWAAA
题目名称 韩信点兵 最终得分 60
用户昵称 稠翼 运行时间 0.002 s
代码语言 Pascal 内存使用 0.17 MiB
提交时间 2014-11-05 08:30:09
显示代码纯文本
program cogs1786;
var
   ans,t,g,y,z,x,n:int64;
   p,m,i:longint;
   f:boolean;
   a,b,c:array[0..11]of int64;
procedure init;
begin
     assign(input,'HanXin.in');reset(input);
     assign(output,'HanXin.out');rewrite(output);
end;
function gcd(a,b:int64):int64;
begin
     if b=0 then exit(a);
     exit(gcd(b,a mod b));
end;
procedure exgcd(a,b:int64);
begin
     if b=0 then
     begin
          if z mod a<>0 then
          begin
               writeln(-1);
               f:=true;
               exit;
          end;
     g:=a;
     x:=z div a;
     y:=0;
     exit;
     end;
     exgcd(b,a mod b);
     if f then exit;
     t:=y;
     y:=(x-a div b*y);
     x:=t mod c[p];
end;
procedure main;
begin
     readln(n,m);
     for i:=1 to m do
     readln(c[i],b[i]);a:=c;
     p:=2;
     while p<=m do
     begin
          z:=b[p]-b[p-1];
          exgcd(c[p-1],c[p]);
          if f then break;
          c[p]:=c[p-1] div g*c[p];
          x:=x mod (c[p] div g);
          b[p]:=(c[p-1]*x+b[p-1])mod c[p];
          inc(p);
     end;
     if  f then exit;
     for i:=2 to m do
     begin
          x:=gcd(a[i-1],a[i]);
          a[i]:=a[i] div x;
          a[i]:=a[i]*a[i-1];
     end;
     ans:=n-b[m];
     ans:=ans mod a[m];
     writeln(ans);
end;
begin
     init;
     main;
end.