比赛 |
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.