P5461 赦免战俘c语言
时间: 2023-11-07 17:53:04 浏览: 135
c语言.c
以下是一个简单的赦免战俘的 C 语言代码:
```c
#include <stdio.h>
int main() {
int n, m, i, j, k, count=0;
scanf("%d %d", &n, &m); // 输入战俘数和赦免周期
int status[n+1]; // 记录战俘状态,0表示待处决,1表示已赦免
for (i = 1; i <= n; i++) {
status[i] = 0; // 初始化所有战俘状态为待处决
}
for (i = 1; i <= m; i++) { // 赦免周期
for (j = 1; j <= n; j++) {
if (j % i == 0) { // 每隔i个战俘进行一次赦免
if (status[j] == 0) { // 如果该战俘还未被赦免
status[j] = 1; // 赦免该战俘
count++; // 统计赦免人数
}
}
}
}
printf("%d\n", count); // 输出赦免人数
for (i = 1; i <= n; i++) {
if (status[i] == 0) { // 如果该战俘还未被赦免
printf("%d ", i); // 输出该战俘编号
}
}
return 0;
}
```
代码思路:
1. 首先输入战俘数 `n` 和赦免周期 `m`。
2. 定义一个数组 `status` 来记录每个战俘的状态,0 表示待处决,1 表示已赦免。初始化所有战俘状态为待处决。
3. 在每个赦免周期中,循环遍历所有战俘,对每隔 `i` 个战俘进行一次赦免。如果该战俘还未被赦免,将其状态设置为已赦免,并统计赦免人数。
4. 循环遍历所有战俘,如果该战俘未被赦免,则输出其编号。
阅读全文