解题思路:
import java.util.Scanner; public class C1160 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ F(sc.nextInt(), sc.nextInt()); } sc.close(); } private static void F(int n, int m){ //构建循环链表 Node head = new Node(null, null); head.next = head; Node p = head; for(int i = 1; i <= n; i++){ p.next = new Node(i, p.next); p = p.next; } // count代表当前数的数字 int count = 0; p = head; while(head.next.next != head){ if(p.next == head) p = head; count++; //开始报数 if(count % m == 0){ //报数到第个m人 //System.out.println(p.next.data); p.next = p.next.next; //该人出圈 }else{ p = p.next; //往下继续循环到只剩一个人 } } System.out.println(head.next.data); } //链表节点类 private static class Node{ private Integer data; private Node next; public Node(Integer data, Node next){ this.data = data; this.next = next; } } }
注意事项:
参考代码:
0.0分
0 人评分
C二级辅导-进制转换 (C语言代码)浏览:1049 |
大神老白 (C语言代码)浏览:691 |
求圆的面积 (C语言代码)浏览:1366 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:584 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:798 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:512 |
关于C语言变量位置的问题浏览:294 |
核桃的数量 (C语言代码)浏览:726 |
1013题解浏览:596 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:1322 |