#278. 「2020 冬令营普及组」圆桌问题 (a)
内存限制:128 MiB时间限制:1000 ms输入文件:a.in输出文件:a.out
题目类型:传统评测方式:文本比较
题目描述
圆桌上围坐着 个人其中 个人是好人,另外 个人是坏人。如果从第一个人开始数数数到第 个人,则立即处死该人,然后从被处死的人之后开始数数,再将数到的第 个人处死…… 依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死 个人之后,圆桌上围坐的剩余的 个人全是好人。
输入格式
输入文件中的仅一行都有两个数依次为 和 ,表示一个问题的描述信息。
输出格式
输出问题的解,问题的解可以用连续的若干行字符来表示,每行的字符数量不超过 ,但是在问题的解中不允许出现空白字符和空行,用大写字母 G
表示好人、大写字母 B
表示坏人。
样例
样例输入复制
2 3
样例输出复制
GBBG
数据范围与提示
对于所有数据,。
分类标签
题解:
#include <bits/stdc++.h>
using namespace std;
vector<int> sb;
int main() {
freopen("a.in", "r", stdin);
freopen("a.out", "w", stdout);
int n, m;
scanf("%d%d", &n, &m);
for (int i = 0; i < (n << 1); i++) sb.push_back(i);
int pos = 0;
for (int i = 0; i < n; i++) {
pos = (pos + m - 1) % sb.size();
sb.erase(sb.begin() + pos);
}
int j = 0;
for (int i = 0; i < 2 * n; i++) {
if (i % 50 == 0 && i)
printf("\n");
if (i == sb[j] && j < sb.size())
printf("G"), j++;
else
printf("B");
}
}