level 2
type
point=^node;
node=record
data:integer;
next:point;
end;
var
head,p1,p2:point;
i,n,k:integer;
begin
readln(n,k);
new(p1);
p1^.data:=1;
head:=p1;
for i:=2 to n do
begin
new(p2);
p2^.data:=i;
p1^.next:=p2;
p1:=p2;
end;
p2^.next:=head;
i:=1;
p1:=head;
repeat
p2:=p1^.next;
i:=i+1;
if i mod k= 0
then begin
p1^.next:=p2^.next;
p2^.next:=nil;
dispose(p2);
end
else p1:=p2
until p2^.next=p2;
writeln(p2^.data);
end.
用链表做,试试看理解程序,还有不明白的可以再问。
2017年06月24日 02点06分