洛谷 P1143 进制转换

题目如下:

 

 思路:

题目要求把一个数转化为十进制 再把十进制转化为n进制

一定注意==

输出:

#include<cstdio> 
#include<cmath>
#include<iostream>
#include<vector>
#include<cctype>
#include<algorithm> 
#include<map>
using namespace std;
int main(){
    int n,sum=0;
    cin>>n;
    string s;
    cin>>s;
    int c;
    cin>>c;
    vector<int>m;
    vector<int>w;
    map<int,string> ans;
    ans[1] = "A";    
    ans[2]="B";
    ans[3]="C";
    ans[4]="D";
    ans[5]="E"; 
    ans[6]="F";
    for(int i=0;s[i];i++)
    {   if(s[i]>='A'&&s[i]<='F')
        m.push_back(s[i]-'A'+10);
        else
        m.push_back(s[i]-'0');
    }
//    for(auto i:m)
//    cout<<i<<" ";
    int j=0;    
    for(int i=m.size()-1;i>=0;i--){
    sum+=m[i]*pow(n,j) ; //转化为十进制的数字 
    j++;
        
    }
//    cout<<sum<<endl;
    //转化为二进制的数字
     while(sum) 
     { w.push_back(sum%c);
         sum/=c;    
     }
    reverse(w.begin(),w.end());
    
    for(auto i:w){
        if(i>=10)
        cout<<ans[i-9];
        else
        cout<<i;
    }
    return 0;
}

 

posted @ 2020-04-15 01:10  miao-xixixi  阅读(208)  评论(0编辑  收藏  举报