public
class
Count3Quit2
...
{
publicstaticvoidmain(String[]args)...{
KidCirclekc=newKidCircle(500);
intcountNum=0;
Kidk=kc.first;
while(kc.count>1)...{
countNum++;
if(countNum==3)...{
countNum=0;
kc.delete(k);
}
k=k.right;
}
System.out.println(kc.first.id);
}
}
class Kid ... {
intid;
Kidleft;
Kidright;
}
class KidCircle ... {
intcount=0;
Kidfirst,last;
KidCircle(intn)...{
for(inti=0;i<n;i++)...{
add();
}
}
voidadd()...{
Kidk=newKid();
k.id=count;
if(count<=0)...{
first=k;
last=k;
k.left=k;
k.right=k;
}else...{
last.right=k;
k.left=last;
k.right=first;
first.left=k;
last=k;
}
count++;
}
voiddelete(Kidk)...{
if(count<=0)...{
return;
}elseif(count==1)...{
first=last=null;
}else...{
k.left.right=k.right;
k.right.left=k.left;
if(k==first)...{
first=k.right;
}elseif(k==last)...{
last=k.left;
}
}
count--;
}
}
publicstaticvoidmain(String[]args)...{
KidCirclekc=newKidCircle(500);
intcountNum=0;
Kidk=kc.first;
while(kc.count>1)...{
countNum++;
if(countNum==3)...{
countNum=0;
kc.delete(k);
}
k=k.right;
}
System.out.println(kc.first.id);
}
}
class Kid ... {
intid;
Kidleft;
Kidright;
}
class KidCircle ... {
intcount=0;
Kidfirst,last;
KidCircle(intn)...{
for(inti=0;i<n;i++)...{
add();
}
}
voidadd()...{
Kidk=newKid();
k.id=count;
if(count<=0)...{
first=k;
last=k;
k.left=k;
k.right=k;
}else...{
last.right=k;
k.left=last;
k.right=first;
first.left=k;
last=k;
}
count++;
}
voiddelete(Kidk)...{
if(count<=0)...{
return;
}elseif(count==1)...{
first=last=null;
}else...{
k.left.right=k.right;
k.right.left=k.left;
if(k==first)...{
first=k.right;
}elseif(k==last)...{
last=k.left;
}
}
count--;
}
}