数制转换
求任意两个不同进制非负整数的转换2进制16进制所给整数在long所能表达的范围之内。 不同进制的表示符号为01...9ab...f或者01...9AB...F。输入描述:输入只有一行包含三个整数anb。a表示其后的n 是a进制整数b表示欲将a进制整数n转换成b进制整数。ab是十进制整数2 ab 16。 数据可能存在包含前导零的情况。输出描述:可能有多组测试数据对于每组数据输出包含一行该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示即01...9AB...F。#include iostream #include algorithm using namespace std; int val(char c) { if (c a c f) { return c - a 10; } else if (c A c F) { return c - A 10; } else { return c - 0; } } char cVal(int i) { if (i 10) { return i 0; } else { return i - 10 A; } } long ten(string n, int a) { long sum 0, t 1; for (long i n.size() - 1; i -1; --i) { sum val(n[i]) * t; t * a; } return sum; } string func(long num, int b) { string s; while (num ! 0) { s cVal(num % b); num / b; } reverse(s.begin(), s.end()); return s; } int main() { freopen(/home/dong/CLionProjects/untitled/in.txt, r, stdin); string n; int a, b; while (cin a n b) { cout func(ten(n, a), b); } return 0; }