• [蓝桥杯2018初赛]明码(10转2进制 bitset)


    题目描述

    汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。
    16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。
    一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。
    把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节,
    一共16行,布局是:
        第1字节,第2字节
        第3字节,第4字节
        ....
        第31字节, 第32字节
    这道题目是给你一段多个汉字组成的信息,每个汉字用32个字节表示,这里给出了字节作为有符号整数的值。
    题目的要求隐藏在这些信息中。你的任务是复原这些汉字的字形,从中看出题目的要求,并根据要求填写答案。

    输入

    无输入,所给信息为(一个10个汉字):
    4 0 4 0 4 0 4 32 -1 -16 4 32 4 32 4 32 4 32 4 32 8 32 8 32 16 34 16 34 32 30 -64 0 
    16 64 16 64 34 68 127 126 66 -124 67 4 66 4 66 -124 126 100 66 36 66 4 66 4 66 4 126 4 66 40 0 16 
    4 0 4 0 4 0 4 32 -1 -16 4 32 4 32 4 32 4 32 4 32 8 32 8 32 16 34 16 34 32 30 -64 0 
    0 -128 64 -128 48 -128 17 8 1 -4 2 8 8 80 16 64 32 64 -32 64 32 -96 32 -96 33 16 34 8 36 14 40 4 
    4 0 3 0 1 0 0 4 -1 -2 4 0 4 16 7 -8 4 16 4 16 4 16 8 16 8 16 16 16 32 -96 64 64 
    16 64 20 72 62 -4 73 32 5 16 1 0 63 -8 1 0 -1 -2 0 64 0 80 63 -8 8 64 4 64 1 64 0 -128 
    0 16 63 -8 1 0 1 0 1 0 1 4 -1 -2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 5 0 2 0 
    2 0 2 0 7 -16 8 32 24 64 37 -128 2 -128 12 -128 113 -4 2 8 12 16 18 32 33 -64 1 0 14 0 112 0 
    1 0 1 0 1 0 9 32 9 16 17 12 17 4 33 16 65 16 1 32 1 64 0 -128 1 0 2 0 12 0 112 0 
    0 0 0 0 7 -16 24 24 48 12 56 12 0 56 0 -32 0 -64 0 -128 0 0 0 0 1 -128 3 -64 1 -128 0 0 

    输出

    根据题意输出正确答案
     

    答案  387420489

    题意:

    输入一行32个数,按顺序每两个数转换成8位二进制数后拼接成一行输出,32个数组成32/2=16行,刚好可以表示一个汉字

    一共有10行输入,蕴含一问题的信息(九的九次方等于多少?),输出这个问题的答案

    题解

    bitset<8>t 实现将一个十进制数转换成二进制数(包括负数),如果自己转换的话比较麻烦(负数变成正数,转二进制,取反再加一)

    #include<iostream>
    #include<cstdio>
    #include<bitset>
    #include<cmath> 
    using namespace std;
    int main()
    {
    
        bitset<8> t;//包括负数转二进制数,t可以当成函数用
        for(int i=0; i<10; ++i)
        {
            for(int j=0; j<16; ++j)
            {
                int x, y;
                string a, b;
                scanf("%d %d", &x, &y);
                t = x; a = t.to_string();//先将整数x转换成8为的二进制数t,在将t转换成字符串
                t = y; b = t.to_string();
                a += b;//字符串拼接
                for(int k=0; k<a.length(); ++k)
                {
                    if(a[k] == '1'){
                        printf("*");
                    }
                    else{
                        printf(" ");
                    }
                }
                printf("
    ");
            }
        }
    
        
        long long ans = pow(9, 9);
        printf("%lld", ans);
        return 0;
     } 
     
  • 相关阅读:
    TPLINK TLWR710N设置详解
    hehe.....
    AS3写FTP登录过程
    QQ
    网页设计标准尺寸:
    女孩,你愿意做他的第几个女朋友
    監聽一個變量的值變化
    dispatchEvent
    10
    C#常用代码
  • 原文地址:https://www.cnblogs.com/-citywall123/p/12486439.html
Copyright © 2020-2023  润新知