• 题目 1213: 幸运儿


    题目描述:

    n 个人围成一圈, 并依次编号1~n,从编号为1 的人开始,按顺时针方向每隔一人选出一个,当一圈结束之后,剩下的人重新围成一圈,再次从编号1的人开始,如此循环直到剩下两人,这剩下的两人就是幸运儿。如果你想成为最后两个幸运儿,请问开始时应该站在什么位置?(设3<=n<=50)

    解题思路:

    然后模拟一下过程(红色字是被删除的,黑色字是剩下的)
     


    选出顺序是:2 4 6 8 10 3 7 11 5
    剩下的幸运儿:1 9
    其实可以发现,1是不会被删掉的,因为每隔一个人删一次,所以我们删除的时候就把第一个元素略过,删除元素最后只剩下两个元素的时候就结束

    代码:

    1. package lanqiao;
    2. import java.util.*;
    3. public class Main {
    4. public static void main(String[] args) {
    5. Scanner sc = new Scanner(System.in);
    6. while(sc.hasNext())
    7. {
    8. int n = sc.nextInt();
    9. ArrayList m = new ArrayList();
    10. for(int i = 1;i <= n;i ++)
    11. {
    12. m.add(i);
    13. }
    14. while(m.size() > 2)
    15. {
    16. for(int i = 1;i < m.size();i ++){
    17. if(m.size() == 2) break;
    18. System.out.print(m.get(i) + " ");
    19. m.remove(i);
    20. }
    21. }
    22. System.out.println();
    23. System.out.println(m.get(0) + " " + m.get(1));
    24. }
    25. }
    26. }

  • 相关阅读:
    Python开发利器KeymouseGo,开源的就是香
    Mybatis学习笔记9 动态SQL
    python相关函数
    flurl监听报错返回的信息
    【无标题】
    停止线程的方法
    大模型简介
    相机相关:相机模型与畸变模型
    pandas索引函数loc和iloc的区别
    【python基础3】
  • 原文地址:https://blog.csdn.net/weixin_64443786/article/details/136218397