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了(个人意见,不喜勿喷)!

  • 相关阅读:
    编写isNull isArray isFunction的方法
    JS中Null与Undefined的区别
    css中关于transform、transition、animate的区别
    js数组去重的方法
    深入理解 Javascript 面向对象编程(转)
    js 创建类和继承的几种方法
    一道面试题,想明白之后好像锤自己几下~~
    关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
    alt和title的用法区别
    C++的黑科技(深入探索C++对象模型)
  • 原文地址:https://www.cnblogs.com/zjylzf/p/12848830.html
Copyright © 2011-2022 走看看