P1143 进制转换(洛谷题面)
题目
题目描述:
请你编一程序实现两种不同进制之间的数据转换。
输入格式:
共三行,第一行是一个正整数,表示需要转换的数的进制 n (2≤n≤16),第二行是一个 n 进制数,若 n>10 则用大写字母 A∼F 表示数码 10∼15,并且该 n 进制数对应的十进制的值不超过 109,第三行也是一个正整数,表示转换之后的数的进制 m (2≤m≤16)。
输出格式:
一个正整数,表示转换之后的 m 进制数。
数据范围与说明:
输入输出样例 #1
输入:
输出:
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <bits/stdc++.h> using namespace std; int main(){ int n,m,num=0; string s; cin>>n; cin>>s; cin>>m; reverse(s.begin(),s.end()); for(int i=0;i<s.size();i++){ if(s[i]>='A'&&s[i]<='F'){ num+=(s[i]-55)*pow(n,i); }else{ num+=(s[i]-'0')*pow(n,i); } } string ans; while(num){ int tmp=num%m; if(tmp>10){ ans.push_back(tmp+55); }else{ ans.push_back(tmp+'0'); } num/=m; } reverse(ans.begin(),ans.end()); cout<<ans; return 0; }
|