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

    漂亮小姐姐点击就送:https://www.luogu.org/problemnew/show/P1143

     

    题目描述

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

    输入输出格式

    输入格式:

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

    输出格式:

    输出仅一行,包含一个正整数,表示转换之后的m进制数。

    输入输出样例

    输入样例#1: 复制
    16
    FF
    2
    
    输出样例#1: 复制
    11111111



    //稍微有点数学的东西就好难啊
    
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    const int N=50;
    
    int n,x,m,ans;
    int a[N];
    char s[N];
    
    int read()
    {
        char c=getchar();int num=0;
        for(;!isdigit(c);c=getchar());
        for(;isdigit(c);c=getchar())
            num=num*10+c-'0';
        return num;
    }
    
    void Decimal_to_other(int x,int m)//十进制转任意进制
    {
        while(x){a[++n]=x%m;x/=m;}
        for(int i=n;i>=1;--i)
            (a[i]<10)?(cout<<a[i]):(cout<<char(a[i]+('A'-10)));
    }
    
    void Convert_to_decimal(int x,char s[]) //任意进制转十进制
    {
        ans=0;
        for(int i=0;i<strlen(s);i++) 
            ans=ans*x+(isdigit(s[i])?(s[i]^'0'):(s[i]-'A'+10));
    }
    
    int main()
    {
        x=read();
        scanf("%s",s);
        Convert_to_decimal(x,s);
        m=read();    
        Decimal_to_other(ans,m); 
        return 0;
    }
  • 相关阅读:
    linux学习之线程篇(二)
    linux学习之线程篇(一)
    linux学习之进程篇(四)
    linux学习之信号篇(二)
    linux学习之信号篇(一)
    myshell案例
    linux学习之gdb调试工具篇
    linux学习之Makefile篇
    linux学习之进程篇(三)
    Linux常用命令-1
  • 原文地址:https://www.cnblogs.com/lovewhy/p/8665887.html
Copyright © 2011-2022 走看看