算法:模拟
分析:总之就是先画个扇形,标记为true的时间点一定位于这个扇形里面,表示这个是起点。
然后我们根据起点进行旋转,这里可以证明我们最多就旋转359次,再多了就是没用的了,然后按照速度进行再次确认,只有通过起点旋转过来的才标记为true。
最后判断输出一下即可。
分析:总之就是先画个扇形,标记为true的时间点一定位于这个扇形里面,表示这个是起点。
然后我们根据起点进行旋转,这里可以证明我们最多就旋转359次,再多了就是没用的了,然后按照速度进行再次确认,只有通过起点旋转过来的才标记为true。
最后判断输出一下即可。
{
ID:1011mashuo
TASK:spin
LANG:PASCAL
}
var
i,j,k,t,s:longint;
v:array[1..5] of longint;
m,w:array[1..5,0..359] of boolean;
begin
assign(input,'spin.in'); reset(input);
assign(output,'spin.out'); rewrite(output);
for i:=1 to 5 do
begin
read(v[i]);
read(t);
for j:=1 to t do
begin
read(s,t);
for k:=s to s+t do w[i,k mod 360]:=true;
end;
readln;
end;
for i:=0 to 359 do
begin
for j:=1 to 5 do for k:=0 to 359 do m[j,(k+v[j]*i) mod 360]:=w[j,k];
for k:=0 to 359 do
begin
for j:=1 to 5 do if not m[j,k] then break;
if m[j,k] then break;
end;
if m[j,k] then break;
end;
if m[j,k] then writeln(i) else writeln('none');
close(input); close(output);
end.