十进制转换为任意进制

10进制--》M
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;

//超过36进制  要看题目字符表示  如100进制  1000进制
char IntToChar(int target){
    if(target < 10)  return target + '0';
    else return target - 10 + 'A';
}


void Convert(int n,int x){
    vector<char> answer;

    if(n==0)  answer.push_back('0');
    else{
        while(n!=0){
            answer.push_back(IntToChar(n % x));
            n /= x;
        }
    }

    for(int i=answer.size() - 1;i>=0;--i)   printf("%c",answer[i]);
    printf("\n");


}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        Convert(n,8);
    }
    return 0;
}

M--》10进制

#include <iostream>
#include <cstdio>
#include <string>
#include <vector>

using namespace std;


int CharToInt(char target){
    if(target >= '0' && target <= '9') return target - '0';
    else return target - 'A' + 10;
}

void Convert(string str,int x){
    int number = 0;
    for(int i=0;i<str.size();++i){
        number *= x;
        number += CharToInt(str[i]);
    }
    printf("%d\n",number);

}


int main() {
    string str;
    while(cin >> str){
        str = str.substr(2);
        Convert(str,16);
    }
    return 0;
}


第三种情况 M-->N
两者融合 M-->10-->N 此处暂略

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务