stl, 巨水
本题要点:
1、用 vector 来模拟约瑟夫问题
2、注意输出格式,每50个字母就换行。每两个例子之间,有空行。
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
const int MaxN = 33000;
bool vis[MaxN];
int n, m;
void solve()
{
vector<int> v;
memset(vis, false, sizeof vis);
int cnt = n, mod = 2 * n, indx = -1;
while(cnt--)
{
int j = 0;
while(j < m)
{
indx = (indx + 1) % mod;
if(!vis[indx])
{
++j;
}
}
v.push_back(indx);
vis[indx] = true;
}
memset(vis, false, sizeof vis);
int len = v.size();
for(int i = 0; i < len; ++i)
{
vis[v[i]] = true;
}
cnt = 0;
for(int i = 0; i < mod; ++i)
{
if(vis[i])
{
printf("B");
}else{
printf("G");
}
++cnt;
if(cnt % 50 == 0)
printf("\n");
}
printf("\n\n");
}
int main()
{
while(scanf("%d%d", &n, &m) != EOF)
{
solve();
}
return 0;
}