比赛 20141105 评测结果 C
题目名称 韩信点兵 最终得分 0
用户昵称 WW TT 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2014-11-05 09:17:55
显示代码纯文本
var ans,t,bb,m,n:int64;
    i,j:longint;
	f:array[1..10,1..2] of int64;
procedure dfs(x,y,z:int64);
var i,j,te,tt,hx,bb:int64;
begin
if x=m then begin ans:=y;exit;end;
i:=1;
hx:=y mod f[x+1,1];
while i<=f[x+1,1] do
begin
te:=y mod f[x+1,1];
if (te=hx)and(i<>1) then begin writeln(-1);close(output);halt;end;
if te=f[x+1,2] then
begin
dfs(x+1,y,z*f[x+1,1]);
exit;
end;
y:=y+z;
i:=i+1;
end;
writeln(-1);close(output);halt;
end;
	

procedure init;
var b:array[1..2]of int64;
begin
readln(n,m);
t:=1;
for i:=1 to m do
begin
readln(f[i,1],f[i,2]);
t:=t*f[i,1];
end;
for i:=1 to m-1 do
 for j:=i+1 to m do
  if f[i,1]<f[j,1]
  then begin b:=f[i];f[i]:=f[j];f[j]:=b;end;
bb:=f[1,1]+f[1,2];
dfs(1,bb,f[1,1]);
end;
begin
assign(input,'HanXin.in');
assign(output,'HanXin.out');
reset(input);
rewrite(output);
init;
if ans>n then begin writeln(-1);close(output);halt;end;
ans:=ans+((n-ans) div t)*t;
writeln(n-ans);
close(output);
end.