8 条题解
-
0
#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
}
-
0
-
#include<stdio.h> int main(void) { int n,m,a[100]={0}; int i=0,k=0,s=0; scanf("%d %d",&n,&m); while(s!=n){ i++; if(i>n){ i=1; }if(a[i]==0){ k++; if(k==m){ a[i]=1; s++; printf("%d ",i); k=0; } } } return 0; }
-
- 1
信息
- ID
- 1029
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 360
- 已通过
- 126
- 上传者