2018年北京邮电大学计算机考研机试试题及答案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38262266/article/details/87928683

/*
1.二进制数字调转
题目描述:一个2^32的数字n,将其转换成二进制数,再倒转,求倒转的二进制数对应的十进制数。
例如:
123
0000 0000 0000 0000 0000 0000 0111 1011
1101 1110 0000 0000 0000 0000 0000 0000
3724541952
举例:
输入:123
输出:3724541952
*/
#include<bits/stdc++.h>
using namespace std;

int main()
{
    string a;
    cin>>a;
    int len = a.length();
    int c[len];
    int max_len = 0;
    if(a[0]=='0')
    {
        c[0] = -1;
    }
    else{
        c[0] = 1;
    }
    for(int i=1; i<len; i++)
    {
        if(a[i]=='0')
        {
            c[i] = c[i-1]-1;
        }
        else
        {
            c[i] = c[i-1]+1;
        }
    }
    for(int i=0;i<len;i++)
    {
        cout<<c[i]<<" ";
    }
    cout<<endl;
    for(int i=0;i<len;i++)
    {
        for(int j=len-1;j>0;j--)
        {
            if(c[i]==c[j])
            {
                if(j-i>max_len)
                    max_len = j-i;
                break;
            }
        }
    }
    cout<<max_len<<endl;
    return 0;
}

/*
输出数字
题目描述:不同数字的输出形状如下:

黑色部分是1,白色部分是0。
输入:长度为1-20的字符串
输出:0和1组合的数字形状,
举例:
输入:01 
输出:
111001
101001
101001
101001
111001
*/


#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    int len = s.length();
    int num = 0;
    for(int j=0; j<6; j++)
        for(int i=0; i<len; i++)
        {
            int a = s[i]-'1'+1;
            if(j==0)
            {
                if(a==0)
                {
                    cout<<"111";
                }
                if(a==1)
                {
                    cout<<"001";
                }
                if(a==2)
                {
                    cout<<"111";
                }
                if(a==3)
                {
                    cout<<"111";
                }
                if(a==4)
                {
                    cout<<"101";
                }
                if(a==5)
                {
                    cout<<"111";
                }
                if(a==6)
                {
                    cout<<"111";
                }
                if(a==7)
                {
                    cout<<"111";
                }
                if(a==8)
                {
                    cout<<"111";
                }
                if(a==9)
                {
                    cout<<"111";
                }
                if(i==len-1)
                {
                    cout<<endl;
                }
            }
            if(j==1)
            {
                if(a==0)
                {
                    cout<<"101";
                }
                if(a==1)
                {
                    cout<<"001";
                }
                if(a==2)
                {
                    cout<<"001";
                }
                if(a==3)
                {
                    cout<<"001";
                }
                if(a==4)
                {
                    cout<<"101";
                }
                if(a==5)
                {
                    cout<<"100";
                }
                if(a==6)
                {
                    cout<<"100";
                }
                if(a==7)
                {
                    cout<<"001";
                }
                if(a==8)
                {
                    cout<<"101";
                }
                if(a==9)
                {
                    cout<<"101";
                }
                if(i==len-1)
                {
                    cout<<endl;
                }
            }
            if(j==2)
            {
                if(a==0)
                {
                    cout<<"101";
                }
                if(a==1)
                {
                    cout<<"001";
                }
                if(a==2)
                {
                    cout<<"111";
                }
                if(a==3)
                {
                    cout<<"111";
                }
                if(a==4)
                {
                    cout<<"111";
                }
                if(a==5)
                {
                    cout<<"111";
                }
                if(a==6)
                {
                    cout<<"111";
                }
                if(a==7)
                {
                    cout<<"001";
                }
                if(a==8)
                {
                    cout<<"111";
                }
                if(a==9)
                {
                    cout<<"111";
                }
                if(i==len-1)
                {
                    cout<<endl;
                }
            }
            if(j==3)
            {
                if(a==0)
                {
                    cout<<"101";
                }
                if(a==1)
                {
                    cout<<"001";
                }
                if(a==2)
                {
                    cout<<"100";
                }
                if(a==3)
                {
                    cout<<"001";
                }
                if(a==4)
                {
                    cout<<"001";
                }
                if(a==5)
                {
                    cout<<"001";
                }
                if(a==6)
                {
                    cout<<"101";
                }
                if(a==7)
                {
                    cout<<"001";
                }
                if(a==8)
                {
                    cout<<"101";
                }
                if(a==9)
                {
                    cout<<"001";
                }
                if(i==len-1)
                {
                    cout<<endl;
                }
            }
            if(j==4)
            {
                if(a==0)
                {
                    cout<<"111";
                }
                if(a==1)
                {
                    cout<<"001";
                }
                if(a==2)
                {
                    cout<<"111";
                }
                if(a==3)
                {
                    cout<<"111";
                }
                if(a==4)
                {
                    cout<<"001";
                }
                if(a==5)
                {
                    cout<<"111";
                }
                if(a==6)
                {
                    cout<<"001";
                }
                if(a==7)
                {
                    cout<<"001";
                }
                if(a==8)
                {
                    cout<<"111";
                }
                if(a==9)
                {
                    cout<<"111";
                }
                if(i==len-1)
                {
                    cout<<endl;
                }
            }

        }
    return 0;
}

不会

/*
最长平衡子串
题目描述:只包含0和1的数字串中,如果0和1的个数一样,称为平衡字符串。求一个字符串的最长平衡子串
举例:
输入:01011  
输出:4
*/
#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long a;
    cin>>a;

    int b[33] = {0};

    if(a%2==0)
    {
        b[32] = 0;
    }
    else
    {
        b[32] = 1;
    }

    long long k=1;

    int cishu = 1;
    while(a>1)
    {
        while(k<=a)
        {
            k = k*2;
            cishu++;
        }
        cishu--;
        b[32-cishu+1] = 1;
        a = a-k/2;
        cishu = 1;
        k = 1;
    }
    int i=1,j=32;
    while(i<j){
        int temp = b[i];
        b[i] = b[j];
        b[j] = temp;
        i++;
        j--;
    }
//    for(int i=1; i<=32; i++)
//    {
//        cout<<b[i];
//    }
    long long sum=0;
    long long w = 1;
    if(b[32]==1) sum = sum+1;
    for(int i=31;i>=1;i--)
    {
        if(b[i]==1){
            int p = 32-i;
            while(p--){
                w = w*2;
            }
            sum+=w;
        }
        w = 1;
    }
    cout<<sum<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38262266/article/details/87928683