【华为OD题库-067】报数游戏-java

news/2024/7/20 19:36:06 标签: 华为od

题目

· 100个人围成—圈,每个人有一个编码,编号从1开始到100。他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。请问最后剩余的人在原先的编号为多少?
输入描述:
输入一个整数参数M
输出描述:
如果输入参数M小于等于1或者大于等于100,输出“ERROR!" ;
否则按照原先的编号从小到大的顺序,以英文逗号分割输出编号字符串
示例1
输入输出口示例仅供调试,后台判题数据一般不包含示例
输入
3
输出
58,91
说明
输入M为3,最后剩下两个人。
示例2
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
4
输出
34,45,97
说明
输入M为4,最后剩下三个人。

思路

直接用list模拟实现即可。
比如:1 2 3 4 5 6 7 8 9 10,每次删除第四个数
第一次:1 2 3 5 6 7 8 9 10。4被删除,下一次还是从该位置计数(idx=3,val=5)
第二次:1 2 3 5 6 7 9 10。8被删除,下一次从(idx=6,val=9)开始计数
第三次:1 3 5 6 7 9 10。2被删除,idx=(6+3)%8=1开始计数
从上面的过程可以看出,每次删除的位置为:(i + m - 1) % list.size()其中i为计数起点,每次删除后list的size会减一。直到list.size小于m时,输出list的值即可

题解

package hwod;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class CountNumGame {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        System.out.println(countNumGame(m));
    }

    //模拟
    private static String countNumGame(int m) {
        if (m <= 1 || m >= 100) return "ERROR!";
        List<Integer> list = new ArrayList<>();
        for (int i = 1; i <= 100; i++) {
            list.add(i);
        }
        int i = 0;//计数起点
        while (list.size() >= m) {
            i = (i + m - 1) % list.size();//需要删除的数
            list.remove(i);
        }
        StringBuilder sb = new StringBuilder();
        for (int j = 0; j < m-1; j++) {
            if(j!=0) sb.append(",");
            sb.append(list.get(j));
        }

        return sb.toString();
    }
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。


http://www.niftyadmin.cn/n/5242425.html

相关文章

vue3使用vue-router嵌套路由(多级路由)

Vue3 嵌套路由的使用和 Vue2 相差不大&#xff0c;主要的区别是 Vue3 的路由实例化使用了 createApp() 方法&#xff0c;所以实例化路由时需要传入根组件。另外&#xff0c;Vue3 的路由对象除了包含 Vue2 中的导航守卫、导航钩子和解析守卫等功能外&#xff0c;还新增了 meta p…

PyQt6 QGroupBox分组框控件

​锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计37条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话…

开关电源超强总结

什么是Power Supply? 开关电源的元件构成 三种基本的非隔离开关电源 三种基本的隔离开关电源 反激变换器&#xff08;Flyback&#xff09;工作原理 &#xff08;电流连续模式&#xff09; 反激变换器&#xff08;Flyback&#xff09;工作原理 &#xff08;电流断续模式&#x…

【科学文献检索】利用web of science的组配查询功能获取多次文献查询结果的差集、并集、交集

利用web of science的组配查询功能获取多次文献查询结果的差集、并集、交集 1 背景需求2 问题描述3 问题解决1 背景需求 在进行文献检索过程中,有时会需要多次查询,然后对比查询的结果的精确性,而文献的数量较多,将所有的文献进行导出后对比,显得很不现实,因此就需要用到…

CoreDNS实战(五)-接入prometheus监控

1 背景 Prometheus插件作为coredns的Plugins&#xff0c;默认情况下是内置在coredns中&#xff0c;如果是自己编译安装的版本&#xff0c;需要注意在编译安装的时候的plugin.cfg文件中添加了prometheus:metrics&#xff0c;这样才能确保编译成功。 # 首先我们检查一下运行的版…

6个实用又好用的交互原型工具!

在 UI/UX 设计中&#xff0c;原型设计是至关重要的一步。正如用户体验中的其它环节一样&#xff0c;有无数的交互原型工具可以帮助你完成原型设计。市场上有太多的交互原型工具&#xff0c;如果你不知道选择哪一种&#xff0c;那么我们将为你介绍 6 个实用又好用的交互原型工具…

2023五岳杯量子计算挑战赛数学建模思路+模型+代码+论文

赛题思路&#xff1a;12月6日晚开赛后第一时间更新&#xff0c;获取见文末名片 “五岳杯”量子计算挑战赛&#xff0c;是国内专业的量子计算大赛&#xff0c;也是玻色量子首次联合移动云、南方科技大学共同发起的一场“企校联名”的国际竞赛&#xff0c;旨在深度融合“量子计算…

java中 list.size() = 1 但显示 All elements are null

一、问题描述 serve层定义一个对象集合接收mybatis返回的结果&#xff0c;查询结果为空&#xff0c;但是接收集合对象长度却为1&#xff0c;集合内部显示All elements are null&#xff1b;导致在直接调用list集合中一些方法时导致报错java.lang.NullPointerException: null …