• 01:数制转换


    01:数制转换

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
    不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

    输入
    输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。
    a,b是十进制整数,2 =< a,b <= 16。
    输出
    输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。
    样例输入
    15 Aab3 7
    样例输出
    210306
    来源
    2005~2006医学部计算概论期末考试
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 using namespace std;
     6 char a[10001];
     7 int b[10001];
     8 int now;
     9 int tot;
    10 int n;//未被转化的进制 
    11 int m;//需要转换的进制 
    12 int da[10001];
    13 char w[20]={'A','B','C','D','E','F'};
    14 int main()
    15 {
    16     cin>>n;
    17     scanf("%s",&a);
    18     
    19     cin>>m;
    20     int l=strlen(a);
    21     if(a[0]=='0'&&l==1)
    22     {
    23         cout<<"0";
    24         return 0;
    25     }
    26     for(int i=0;i<l;i++)
    27     {
    28         if(a[i]>=97&&a[i]<=122)
    29         {
    30             a[i]=a[i]-32;
    31         }
    32         if(a[i]>=49&&a[i]<=57)
    33         {
    34             b[i]=a[i]-48;
    35         }
    36         else if(a[i]>=65&&a[i]<=90)
    37         {
    38             b[i]=a[i]-55;
    39         }
    40     }
    41     int ans=0;
    42     int now=0;
    43     for(int i=l-1;i>=0;i--)
    44     {
    45         ans=ans+b[i]*(pow(n,now));
    46         now++;
    47     }
    48     int now2=1;
    49     while(ans!=0)
    50     {
    51         int r=ans%m;
    52         b[now2]=r;
    53         ans=ans/m;
    54         now2++;
    55     }
    56     for(int i=now2-1;i>=1;i--)
    57     {
    58         if(b[i]<10)
    59         cout<<b[i];
    60         else 
    61         {
    62             int k=b[i]-10;
    63             cout<<w[k];
    64         }
    65     }
    66     /*for(int i=now2;i>=0;i--)
    67     cout<<da[i];*/
    68     return 0;
    69 }

    要注意考虑a是0的情况

  • 相关阅读:
    JSON、JSONObject、JavaBean三者的相互转换
    Redis下载安装及设置密码
    Git撤销已经提交的 commit
    SpringBoot文件上传、删除及下载
    JavaScript 获取当前系统时间(精确到天)
    Python搭建简易HTTP服务(3.x版本和2.x版本的)
    20151017第一天
    js知识点: 数组
    jQuery事件委托方法 bind live delegate on
    数组去重的方法
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6511441.html
Copyright © 2020-2023  润新知