链接:http://acm.hdu.edu.cn/diy/contest_showproblem.php?cid=23003&pid=1004
思路:直接用字符串模拟就行。坑爹的描述后来加了一句话,wa了好多发。
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
unsigned long long m;
int n;
void trans(string &s) {
char a[70] = {'0'};
int num = 0;
while (m) {
a[num++] = m % 2 + '0';
m /= 2;
}
if (num > n) //一开始少了这句wa了
num = n;
s = string(a, num);
reverse(s.begin(), s.end());
s = string(n-num, '0') + s;
}
int main()
{
int T;
cin >> T;
while (T--) {
cin >> m >> n;
string arrs[n], s;
trans(s);
arrs[0] = s;
for (int i = 1; i < n; ++i) {
arrs[i] = arrs[i-1].substr(1);
arrs[i] += arrs[i-1][0];
}
sort(arrs, arrs + n);
for (int i = 0; i < n; ++i)
cout << arrs[i][n-1];
cout << endl;
}
return 0;
}