文章目录
HDU 4841 圆桌问题
题目链接:HDU 4841 圆桌问题
题意
圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。
Input
多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767)
Output
对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母为一行,不允许出现空白字符。相邻数据间留有一空行。
Sample Input
2 3
2 4
Sample Output
GBBG
BGGB
思路:
使用vector模拟,编号为0-2n-1,初始都为好人,然后再数数删除第m个人,直到删除了n个人为止即可;
因为是一个环,每数到第m个人删除即可,所以判断第m个人需要取模;
最后vector中剩下的就都是好人了,然后使用了双指针的方式,根据对应位置输出值即可
注意:
输出的时候需要注意,每两组数据之间都有空行,同时一行最多存放50个字母
AC代码:使用G++提交
#include <iostream>
#include <vector>
using namespace