1.练习项目:
题目描述
给定一个 N 进制数 S,请你将它转换为 M 进制。
输入描述
第一行为一个整数 T,表示测试数据数量。 (1≤T≤1e5)
每个测试用例包含两行,第一行包含两个整数 N,M。
第二行输入一个字符串 S,表示 N 进制数。
数据范围保证:2≤N,M≤16,若 N≥10,则用 A∼F 表示字码 10∼15。保证 S 对应的十进制数的位数不超过 10。
输出描述
输出共 T,每行表示一组数据的答案。
2.选择课程
在蓝桥云课中选择题库,选择题号1230并开始练习。
3.开始练习
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e3;
int a[N];
const char ch[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
void solve()
{
int n,m;
cin>>n>>m;
string s;
cin>>s;
for(int i=0;i<s.length();i++){
if(s[i]>='0'&&s[i]<='9'){
a[i]=s[i]-'0';
}else{
a[i]=s[i]-'A'+10;
}
}
ll x;
for(int i=0;i<s.length();i++){
x=x*n+a[i];
}
string ans;
while(x){
ans+=ch[x%m];
x/=m;
}
reverse(ans.begin(),ans.end());
cout<<ans<<'\n';
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
(2)检验结果
对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。
(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。