华为OD机试 -报数游戏(2025A卷 100分)

题目描述

2025A卷 100分题型

100个人围成一圈,每个人有一个编码,编号从1开始到100。
他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。

请问最后剩余的人在原先的编号为多少?

输入描述
输入一个整数参数 M

输出描述
如果输入参数M小于等于1或者大于等于100,输出“ERROR!”;
否则按照原先的编号从小到大的顺序,以英文逗号分割输出编号字符串

示例1

输入

3

输出

58,91

示例2

输入

4

输出

34,45,97

题解

这是一个经典的约瑟夫环的问题。

  • 使用list结构(双向链表容器)移除中间元素(移除元素复杂度为O(1))将问题 转换为移除指定位置的元素。
    ### 如何在 WinForms 中使用 SqlSugar 进行数据库操作 #### 安装 SqlSugar 为了能够在 WinForms 应用程序中使用 SqlSugar,首先需要安装此库。可以通过 NuGet 包管理器来实现这一目标: ```powershell Install-Package SqlSugar ``` 这一步骤确保了项目能够访问到必要的命名空间和类[^1]。 #### 初始化 SqlSugarClient 实例 初始化 `SqlSugarClient` 对象是连接至数据库的关键步骤之一。下面是一个简单的例子展示如何创建这个实例: ```csharp var db = new SqlSugar.SqlSugarClient(new ConnectionConfig() { ConnectionString = "your_connection_string", // 替换成实际的连接字符串 DbType = DbType.SqlServer, IsAutoCloseConnection = true }); ``` 这段代码设置了数据库类型为 SQL Server 并启用了自动关闭连接的功能。 #### 创建实体模型 定义好要映射的数据表对应的 C# 类非常重要。例如,如果有一个用户信息表,则可以在 Models 文件夹下建立相应的 UserInfos 类: ```csharp public class UserInfos { /// <summary> /// 用户ID /// </summary> public int UserId { get; set; } /// <summary> /// 用户名 /// </summary> public string UserName { get; set; } } ``` 这里通过属性注释提供了额外的信息帮助理解字段含义[^4]。 #### 执行 CRUD 操作 有了上述准备工作之后就可以轻松执行增删改查等基本操作了。以下是几个常用方法的例子: - **查询所有记录** 查询整个表格中的所有条目非常直观: ```csharp var list = db.Queryable<UserInfos>().ToList(); ``` - **插入新纪录** 插入一条新的用户信息也很容易做到: ```csharp var userInfo = new UserInfos() {UserName = "test"}; db.Insertable(userInfo).ExecuteCommand(); ``` - **更新现有记录** 更新特定用户的用户名如下所示: ```csharp var updateInfo = new UserInfos(){UserId=1, UserName="newName"}; db.Updateable(updateInfo).ExecuteCommand(); ``` - **删除指定记录** 删除某个 ID 的用户同样简单明了: ```csharp db.Deleteable<UserInfos>(id => id.UserId == 1).ExecuteCommand(); ``` 这些基础的操作展示了如何利用 SqlSugar 提高开发效率的同时保持良好的可读性和维护性。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    无限码力

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值