旋转的二进制

来源:互联网 发布:生鲜运输 知乎 编辑:程序博客网 时间:2024/05/21 07:41

链接: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;}


0 0
原创粉丝点击