此题链接单击这里
=================
只是模拟过程
附代码
#include <iostream>
#include <cstring>
#include <list>
using namespace std;
int main()
{
int N;
cin >> N;
while (N--)
{
int m, a[5002];
memset(a, 1, sizeof(a));
cin >> m;
for (int i = 1; i <= m; i++)
a[i] = i;
int k = m;
int loge = 2;
while (k > 3)
{
int q = 0;
if (loge == 2)
{
for (int i = 1; i <= m; i++)
if (a[i] != 0 && ++q == 2)
{
q = 0;
a[i] = 0;
k--;
}
loge = 3;
}
else
{
for (int i = 1; i <= m; i++)
if (a[i] != 0)
{
if (a[i] != 0 && ++q == 3)
{
q = 0;
a[i] = 0;
k--;
}
}
loge = 2;
}
}
loge = 1;
for (int i = 1; i <= m; i++)
if (a[i] != 0)
if (loge)
{
cout << i;
loge = 0;
}
else
cout << ' ' << i;
cout << endl;
}
}
有问题联系企鹅791267032
邮箱地址….wutanrong@Hotmail.com