7 条题解

  • 0
    @ 2024-7-18 11:58:15

    #include // 引入标准输入输出流 #include // 引入向量容器

    int main() { std::vector v; // 创建一个用于存储参与者编号的向量 int n, m, k = 0; // n: 参与者总数;m: 报数规则;k: 当前指向的参与者索引

    // 输入参与者总数n和报数规则m
    std::cin >> n >> m;
    
    // 初始化向量,将参与者的编号添加到向量中
    // 注意编号从1开始,所以使用i <= n
    for(int i = 1; i <= n; ++i)
        v.push_back(i); // 向向量中添加新的元素i
    
    // 当向量中剩余的参与者多于一人时继续循环
    while(v.size() > 1) {
        // 计算下一个要移除的参与者的索引
        // 使用模运算保证索引在向量的有效范围内
        k = (k + m - 1) % v.size();
    
        // 输出当前要移除的参与者编号
        std::cout << v[k] << ' ';
    
        // 从向量中移除当前索引处的参与者
        // 注意使用erase会自动调整向量大小
        v.erase(v.begin() + k);
    }
    
    // 当向量中只剩下一个参与者时,输出其编号
    std::cout << v.front() << '\n'; // 输出向量的第一个元素
    
    return 0; // 主函数正常结束返回0
    

    }

    信息

    ID
    1029
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    359
    已通过
    126
    上传者