public class 约瑟夫环 {
public static int[] answer(int m, int n){
Node head = new Node(1,null);
Node temp = null;
for (int i = 2; i <= m; i++) {
temp = temp==null?head:temp;
temp.next = new Node(i,null);
temp=temp.next;
}
temp.next = head;
Node p = head;
while (p.next.next!=p){
for (int i = 1; i < n-1; i++) {
p = p.next;
}
p.next = p.next.next;
}
return new int[]{p.var,p.next.var};
}
@Data
@AllArgsConstructor
private static class Node {
int var;
Node next;
}
public static void main(String[] args) {
System.out.println(Arrays.toString(answer(39,3)));
System.out.println(Arrays.toString(answer(39,7)));
}
}