| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
帮忙研究下。。谢谢。。。。。。。。。。var
n,p:integer;
t:array[0..199,0..199]of integer;
b:array[0..199,0..199]of boolean;
d:array[0..199]of longint;
procedure init;
var
i,j:integer;
begin
readln(n,p);
for i:=0 to n-1 do
begin
for j:=0 to p-1 do read(t[i,j]);
readln;
end;
end;
procedure turn;
var
i,j,te:integer;
begin
for i:=0 to n-1 do
for j:=0 to (p-1) div 2 do
begin
te:=t[i,j]-1; t[i,j]:=t[i,p-j-1]-1;t[i,p-j-1]:=te end;
end;
procedure find;
var
i,j,k,x,ans:longint;
begin
i:=d[0];ans:=d[0]; x:=0;
for j:=1 to n-1 do
begin
k:=d[j];
while (i<>k) do
begin
i:=abs(i-k);
x:=i;i:=k;k:=x
end;
ans:=ans*d[j] div i;
i:=ans;
end;
write(ans);
end;
procedure work;
var
i,j,k,te:integer;
begin
init;
turn;
k:=0;
for i:=0 to n-1 do if (t[i,0]=t[i,1])and(t[i,0]=i) then inc(k);
if k=n then write('1')
else begin
fillchar(d,sizeof(d),0);
for i:=0 to n-1 do
begin
j:=1;
fillchar(b,sizeof(b),false);
d[i]:=-1;
k:=i;
repeat
inc(d[i]);
if (b[k,d[i] mod p])and(k=i) then j:=0
else if b[k,d[i] mod p] then begin d[i]:=0;j:=0 end
else b[k,d[i] mod p]:=true;
k:=t[k,d[i] mod p];
until j=0;
end;
b[0,0]:=true;
for i:=0 to n-1 do if d[i]=0 then b[0,0]:=false;
if b[0,0] then find else write('No one knows.');
end;
end;
begin{main}
work;
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator