中文题,题意一看就是卧槽,这不约瑟夫么,然后脑子一抽就用了链表写,然后果然T了,最后用Vector模拟的约瑟夫问题。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <iomanip>
#include <algorithm>
#include <vector>
#define LL __int64
using namespace std;
int n,m;
vector<int>p;
int flag[55000];
int main()
{
int cnt;
int s;
while(scanf("%d%d",&n,&m)!=EOF)
{
s=2*n;
p.clear();
for(int i=1;i<=s;i++)
{
p.push_back(i);
flag[i]=0;
}
cnt=1;
while(s>n)
{
cnt+=m-1;
if(cnt<=s)
{
flag[p[cnt-1]]=1;
p.erase(p.begin()+cnt-1);
if(cnt==s)
{
cnt=1;
}
}
else
{
cnt%=s;
if(cnt==0)
{
cnt=s;
}
flag[p[cnt-1]]=1;
p.erase(p.begin()+cnt-1);
if(cnt==s)
{
cnt=1;
}
}
s--;
}
for(int i=1;i<=2*n;i++)
{
if(flag[i])
{
cout<<"B";
}
else
{
cout<<"G";
}
if(i%50==0)
{
cout<<endl;
}
}
cout<<endl;
cout<<endl;
}
return 0;
}