HDUOJ----旋转的二进制

旋转的二进制

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 46   Accepted Submission(s) : 10

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

给定一个自然数M,及其二进制长度N,得到一个N位的二进制串     b1 b2 ... bN-1 bN 将该串做左旋转,即b1移到bN后面,得到一个新的二进制串:     b2 b3 ... bN-1 bN b1 对新的二进制串再做左旋转,得二进制串     b3 b4 ... bN-1 bN b1 b2 重复旋转操作操作,可得N个二进制串,对这N个串排序,可得一个N*N的矩阵. 例如: 1 0 0 0 1->0 0 0 1 1->0 0 1 1 0->0 1 1 0 0->1 1 0 0 0 对它们做排序,得矩阵

    0   0   0   1   1
    0   0   1   1   0 
    0   1   1   0   0
    1   0   0   0   1  
    1   1   0   0   0  

问:给出一个自然数M,及其二进制长度N,求出排序矩阵的最后一列。 对于上面的例子,给出M=3,N=5,要你的程序输出10010。 补充说明:存在自然数M的二进制表达超过N位的情况,在这种情况下,取前N次循环的二进制串排序后的最后一列即可。

Input

第一行有一个自然数K,代表有K行测试数据(K<=1000)。 第二行至第K+1行,每行的第一个为自然数M,第二个为二进制长度N(N<64)。

Output

输出K行,每行N个二进制,表示矩阵最后一列从上到下的二进制。

Sample Input

3
3 5
4 7
1099512709120 45

Sample Output

10010
1000000
110000000000000000000000000000100000000000000

Source

CodingTrip - 携程编程大赛 (预赛第一场)

题意不明确,到底超过了n之后全保留排序结果是挫的,截取后面的n位反而是对的...

 这道题还恶心,居然m要用unsigned __Int64

代码: 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char str[68][100];
int cmp(const void *a , const void *b)
{
    return strcmp((char *)a ,(char *)b);
}
int main()
{
    int test,nn,i,j;
   unsigned __int64 m;
    scanf("%d",&test);
    while(test--)
    {
        scanf("%I64d%d",&m,&nn);
        memset(str,'0',sizeof(str));
     i=nn-1;
    while(m>0)
     {
        if(m&1) str[0][i]='1';
        m>>=1L;
        i--;
        if(i<0) break;
     }
     for(i=1;i<nn;i++)
     {
         for(j=0;j<nn;j++)
         {
          str[i][j]=str[i-1][(j+1)%nn];
         }
     }
     qsort(str,nn,sizeof(str[0]),cmp);
     for(i=0;i<nn;i++)
         printf("%c",str[i][nn-1]);
     putchar(10);
    }
    return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信技能树

(11)仿写bowtie-生信菜鸟团博客2周年精选文章集

然后仿写了bowtie,对我的编程技术提高非常有帮助。目录如下: 自己动手写bowtie第一讲:BWT算法详解并建立索引 自己动手写bowtie第二讲:优化索引...

35960
来自专栏小樱的经验随笔

洛谷 P1876 开灯(思维,枚举,规律题)

P1876 开灯 题目背景 该题的题目是不是感到很眼熟呢? 事实上,如果你懂的方法,该题的代码简直不能再短。 但是如果你不懂得呢?那。。。(自己去想) 题目描述...

30660
来自专栏文渊之博

小议如何使用APPLY

简介 如果你打算为在结果集中的每条记录写一个调用表值函数或者表值表达式的select语句,那么你就能用到APPLY 操作符来实现。一般又两种形式写法: 第一种格...

18350
来自专栏菩提树下的杨过

数据结构C#版笔记--啥夫曼树(Huffman Tree)与啥夫曼编码(Huffman Encoding)

哈夫曼树Huffman tree 又称最优完全二叉树,切入正题之前,先看几个定义 1、路径 Path 简单点讲,路径就是从一个指定节点走到另一个指定节点所经过的...

28290
来自专栏软件开发 -- 分享 互助 成长

C++中巧妙的位运算

位运算要多想到与预算和异或运算,并常常将两个数对应位上相同和不同分开处理 一、x&(x-1)消除x二进制中最右边的一个1。 这个比较厉害,比如统计某个 二、与和...

35760
来自专栏蘑菇先生的技术笔记

探索c#之跳跃表(SkipList)

29180
来自专栏技术沉淀

Matplotlib可视化Pyplot Tutorial

17640
来自专栏大数据风控

R中的数据结构(Array,Factor,List,DataFrame)

1、R中的数据结构-Array #一维数组 x1 <- 1:5; x2 <- c(1,3,5,7,9) x3 <- array(c(2, 4, 6, 8, 10...

23890
来自专栏数据结构与算法

BZOJ2595: [Wc2008]游览计划(斯坦纳树,状压DP)

17300
来自专栏SeanCheney的专栏

《Pandas Cookbook》第11章 用Matplotlib、Pandas、Seaborn进行可视化

20930

扫码关注云+社区

领取腾讯云代金券