zoukankan      html  css  js  c++  java
  • P1143 进制转换

    这个题说的就是给你一个n进制的数,转成m进制,这题相对来说是很简单的,不过我写的代码又臭又长( ̄▽ ̄)"

    我想到的方法是把n进制转为十进制,再将十进制转为m进制

    用样例来解释吧,要将十六进制的FF转为二进制

    先将FF转为十进制,F在十六进制里代表的是15

    个位的F代表15个1

    十位的F代表15个16

    FF的十进制就是15*1+15*16,结果是255

    再将255转为二进制

    对255进行取余,结果是1,再将255/2,结果是127

    对127进行取余,结果是1,再将127/2,结果是63

    对63进行取余,结果是1,再将63/2,结果是31

    ……

    结果是11111111,这样就把FF的二进制求出来了

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    string s;
    int m,n,x=1,a,o[100];
    int main()
    {
        cin>>m;
        cin>>s;
        cin>>n;
        for(int i=s.length()-1;i>=0;i--)//这里注意要倒过来,不然数字就反了
           {
            if(s[i]=='A'){
                a+=10*x;
            }
            else if(s[i]=='B'){
                a+=11*x;
            }
            else if(s[i]=='C'){
                a+=12*x;
            }
            else if(s[i]=='D'){
                a+=13*x;
            }
            else if(s[i]=='E'){
                a+=14*x;
            }
            else if(s[i]=='F'){
                a+=15*x;//十六进制的数会出现字母,这部分就是把字母转换成数字
            }
            else{
                a+=(s[i]-'0')*x;
            }
            x*=m;
        }//这里把n进制转成十进制
        x=0;
        while(a!=0)
        {
            o[x++]=a%n;//要倒这输出,存入数组会简便一些
            a/=n;//这是把十进制转成m进制
        }
        for(int i=x-1;i>=0;i--)
        {
            if(o[i]==10)
            {
                cout<<'A';
            }
            else if(o[i]==11)
            {
                cout<<'B';
            }
            else if(o[i]==12)
            {
                cout<<'C';
            }
            else if(o[i]==13)
            {
                cout<<'D';
            }
            else if(o[i]==14)
            {
                cout<<'E';
            }
            else if(o[i]==15)
            {
                cout<<'F';
            }//如果输出的数是十六进制,就要把数字改为字母输出
            else
            {
                cout<<o[i];
            }
        }
        return 0;
    }

    这样就愉快的AC了(个人意见,不喜勿喷)!

  • 相关阅读:
    BZOJ2034 【2009国家集训队】最大收益
    「PKUSC2018」最大前缀和
    「PKUSC2018」真实排名
    【FJOI2016】建筑师
    【FJOI2014】最短路径树问题
    【HNOI2007】紧急疏散
    【TJOI2015】线性代数
    【SDOI2017】新生舞会
    POJ2079 Triangle
    【SDOI2011】工作安排
  • 原文地址:https://www.cnblogs.com/zjylzf/p/12848830.html
Copyright © 2011-2022 走看看