P1100题

大家好,我是刘家良

这篇题解是我的第二篇题解。

题目描述

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

输入格式

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

输出格式

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

输入输出样例

输入 #1
16
FF
2
输出 #1
11111111
思路
我的思路是,先用字符串string输入一个数,把他转成int类型的一个数,在进行转进制操作
代码如下:
#include<bits/stdc++.h>//万能头文件
using namespace std;
int n,m,k='1'-1,f='A'-10,r,sum,w[1100005],o;
string a;//输入用的字符串
int main(){    
    cin>>n>>a>>m;
    r=a.size()-1;
    int d,s=n;
    for(int i=0;i<=a.size()-1;i++){
        if(a[i]>='0' && a[i]<='9') d=a[i]-k;
        else d=a[i]-f;
        if(r!=0){
            s=n;
            for(int j=1;j<r;j++)
            s*=n;
            d*=s;
            sum+=d;
        
        }
        else sum+=d;
        r--;
        
    }
    for(;sum>0;sum/=m)
    w[++o]=sum%m;
    for(int i=o;i>=1;i--){
        if(w[i]<10) cout<<w[i];
        else cout<<char(w[i]+f);
    }
    cout<<endl;
    return 0;
}

 

 
posted @ 2020-05-08 19:30  快乐老家远征军  阅读(160)  评论(0编辑  收藏  举报