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

    P1143 进制转换

    分类:数论,进制

    1.题目描述

      请你编一程序实现两种不同进制之间的数据转换。

    输入格式

      共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A-F表示数码10-15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)

    输出格式

      一个正整数,表示转换之后的m进制数。

    输入输出样例

    输入

    16 
    FF
    2

    输出

    11111111

    样例说明

    16进制下FF转成2进制11111111


    2.所含知识点

    进制转换

      进制也就是进位计数制,是人为定义的带进位的计数方法。 对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

    1.n进制转十进制

    例如:

    二进制下的10010为十进制下的18

    那,这是怎么转换的呢?

    按      开 

    方法为:把n进制数按权展开、相加即得十进制数。

    一个n进制数个位上的权为n0,十位就是n1.......以此类推,最后相加就是十进制了

    例如:8进制下的512,

    算式为:(512)8=2*80+1*81+5*82

          =2*1+1*8+5*64

          =(330)10

    2.十进制转n进制

    例如

    十进制下的18为2进制下的10010

    方法:

    短除法

    短除法运算方法是先用一个除数除以能被它除尽的一个质数,以此类推,除到商是0或者质数为止。

    短除法常被应用在求最大公因数以及最小公倍数

    n即为短除法中的除数

    直到商是0,则倒取余数

    n进制转m进制的过程就是先转成十进制

    3.代码

     由于参与>10进制的进制,所以我们分两步讨论

    另外,为了能够输入字符串,用到了string

    #include <iostream>
    #include <cstdio>
    #include <string> using namespace std; int main(){ int n; long long m; string s; cin>>n>>s>>m; /* 思路:先转十进制,再转m进制 n进制转十进制思路: 位权相加 十进制转m进制思路:短除法倒取余数 */ long long sum1=0; int x=1; if(n!=10){ for(int i=s.length()-1;i>=0;i--){ if(s[i]<='9'){ sum1=sum1+((s[i]-'0')*x); } else{ sum1+=(int(s[i]-'A')+10)*x; } x*=n; } }else if(n==10) { //十进制转十进制 for(int i=s.length()-1;i>=0;i--){ sum1=sum1+((s[i]-'0')*x); x*=n; } } //第二步,由10进制转m进制 //m<11 string sum2; int shang=sum1,yv,i=0; if(m<11){ while(shang!=0){ yv=shang%m; sum2[i]=yv+'0'; shang/=m; i++; } sum2[i]='0'; for(int j=i-1;j>=0;j--){ cout<<sum2[j]; } }else{ while(shang!=0){ yv=shang%m; if(yv<=9){ sum2[i]=yv+'0'; }else{ sum2[i]=yv-10+'A'; } shang/=m; i++; } sum2[i]='0'; for(int j=i-1;j>=0;j--){ cout<<sum2[j]; } } return 0; }

    
    
    
    
     

     
  • 相关阅读:
    亚马逊的客户服务和承诺
    亚马逊云主管:我们有可能成为全世界最大的企业公司
    阿里市值超越亚马逊 马云开启下半场技术理想
    股价飙升500倍,市值超过4700亿美元,从网络书店起家的亚马逊凭什么一飞冲天?
    美国女子不断收到中国神秘快递,背后原因竟是刷单
    亚马逊称网络星期一成公司史上“最大的购物日
    万众创业葬送了多少人的前程
    日本企业遭遇严重用工短缺
    培生同意以3亿美元出售华尔街英语
    亚马逊500多名欧洲员工宣布在“黑色星期五”罢工
  • 原文地址:https://www.cnblogs.com/AK-IOI/p/12842817.html
Copyright © 2011-2022 走看看