比赛 20141105 评测结果 AAAAAAAAAA
题目名称 韩信点兵 最终得分 100
用户昵称 东方老败 运行时间 0.224 s
代码语言 Pascal 内存使用 0.17 MiB
提交时间 2014-11-05 11:39:25
显示代码纯文本
var n,maxn,d1,d2,d3,lcm,d4,d5:int64;
    m,i,j,k,o1,o2,o3:longint;
	a,b:array[1..20]of int64;
        c:boolean;

procedure init;
begin
readln(n,m);
lcm:=1;
for i:=1 to m do
begin
 read(a[i],b[i]);
 if a[i]>maxn then begin maxn:=a[i];o1:=i;end;
 lcm:=lcm*a[i];
end;
end;

procedure work;
begin
d1:=a[o1];a[o1]:=a[1];a[1]:=d1;
d1:=b[o1];b[o1]:=b[1];b[1]:=d1;
d1:=0;
//for i:=1 to m do writeln(a[i],' ',b[i]);
while true do
begin
d2:=d1*a[1]+b[1];
  if (d2>n) then
  begin writeln(-1);exit;end;
c:=true;
for i:=2 to m do
 if d2 mod a[i]<>b[i] then
 begin c:=false;break;end;
if c then break;
d1:=d1+1;
end;
//writeln(d2);
d3:=n-d2;
d4:=d3 mod lcm;
writeln(d4);
end;

begin
assign(input,'HanXin.in');reset(input);
assign(output,'HanXin.out');rewrite(output);
init;
work;
close(output);
end.