2018-ACetic_ACid/AugTrain-04/B
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
{{{
#include <bits/stdc++.h>
#ifdef LOCAL
#define debug 1
#else
#define debug 0
#endif
using namespace std;
typedef unsigned long long ll;
int main()
{
freopen("bubble.in", "r", stdin);
freopen("bubble.out", "w", stdout);
ll n, k;
while (cin >> n >> k)
{
if (n == 0 && k == 0) break;
vector<int> a(n);
for (int i = 0; i < n; i++)
{
a[i] = i + 1;
}
k--;
for (int i = 0; (1llu << i) <= k; i++)
{
if (k & (1llu << i))
{
swap(a[n - i - 1], a[n - i - 2]);
}
}
for (int i = 0; i < n; i++)
{
if (i) printf(" ");
printf("%d", a[i]);
}
printf("\n");
}
}
}}}
#include <bits/stdc++.h>
#ifdef LOCAL
#define debug 1
#else
#define debug 0
#endif
using namespace std;
typedef unsigned long long ll;
int main()
{
freopen("bubble.in", "r", stdin);
freopen("bubble.out", "w", stdout);
ll n, k;
while (cin >> n >> k)
{
if (n == 0 && k == 0) break;
vector<int> a(n);
for (int i = 0; i < n; i++)
{
a[i] = i + 1;
}
k--;
for (int i = 0; (1llu << i) <= k; i++)
{
if (k & (1llu << i))
{
swap(a[n - i - 1], a[n - i - 2]);
}
}
for (int i = 0; i < n; i++)
{
if (i) printf(" ");
printf("%d", a[i]);
}
printf("\n");
}
}