题解 | #数制转换#
数制转换
https://www.nowcoder.com/practice/8ef02ef8571b417d8c311a87861f7a03
#include <iostream> #include "cmath" using namespace std; int charToInt(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 intToChar(int i){ if(i>=10&&i<=15) return 'A'+i-10; else return '0'+i; } int main() { int a; while (cin >> a ) { // 注意 while 处理多个 case // cout << a + b << endl; string n; int b; cin>>n>>b; long long mid=0; for(int i=0;i<n.size();i++){ mid+=pow(a,n.size()-i-1)*charToInt(n[i]);//i*n^k累积相加 } string b_str; if(mid==0) b_str='0'; while(mid>0){ b_str=intToChar(mid%b)+b_str; mid=mid/b; } cout<<b_str<<endl; } } // 64 位输出请用 printf("%lld")