【HDU 4841】 圆桌问题
发布日期:2021-05-04 19:23:51 浏览次数:20 分类:原创文章

本文共 1033 字,大约阅读时间需要 3 分钟。

A - 圆桌问题

圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。

Input

多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767);

Output

对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母为一行,不允许出现空白字符。相邻数据间留有一空行。

Sample Input

2 32 412

Sample Output

GBBGBGGB12

代码:

vector的删除(难点:格式)

#include <iostream>#include <algorithm>#include <string>#include <queue>#include <cstring>#include <cmath>#include <vector>#include <set>#include <map>using namespace std;int main() {   	int n,m;	while(scanf("%d%d",&n,&m)!=EOF)	{           vector<int> v;		int kill=0,now=0,p=0;		for(int i=0;i<2*n;i++) v.push_back(i);		while(kill<n)		{   			now = (now+m-1)%v.size();			v.erase(v.begin()+now);			kill++;		}        for(int i=0; i<2*n; i++)        {               if(!(i % 50) && i) cout << endl;            if(p<v.size() && i==v[p])            {                   p++;                cout << "G";            }            else  cout << "B";        } 		   cout<<endl<<endl;	}	return 0;}
上一篇:【一只蒟蒻的刷题历程】 【HDU 1062】 Text Reverse
下一篇:【一只蒟蒻的刷题历程】 【洛谷】P1119-灾后重建 (最短路Floyed)(容易理解!!!)

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年03月28日 20时37分18秒