B3869 题解
题目传送门。
众所周知进制的本质其实就是每一位乘几。例如十进制,
我们可以假定一个进制系数
可以得到这个
所以通过这个
详细操作见代码。
#include<bits/stdc++.h>
using namespace std;
map<char,int>mp;
string s;
int T,n;
long long _=1;
int main(){
mp['0']=0;mp['1']=1;mp['2']=2;mp['3']=3;mp['4']=4;mp['5']=5;mp['6']=6;
mp['7']=7;mp['8']=8;mp['9']=9;mp['A']=10;mp['B']=11;mp['C']=12;mp['D']=13;
mp['E']=14;mp['F']=15;
cin>>T;
while(T--){
cin>>n>>s;
long long ans=0;
_=1;
for(int i=s.length()-1;i>=0;i--){
ans=ans+_*mp[s[i]];
_*=n;
}
cout<<ans<<endl;
}
return 0;
}
其中
long long ans=0;
_=1;
for(int i=s.length()-1;i>=0;i--){
ans=ans+_*mp[s[i]];
_*=n;
}
一段的本质就是累加其他进制数在十进制中的表示。在十进制转其他进制时,我们在每一位除以
而
mp['0']=0;mp['1']=1;mp['2']=2;mp['3']=3;mp['4']=4;mp['5']=5;mp['6']=6;
mp['7']=7;mp['8']=8;mp['9']=9;mp['A']=10;mp['B']=11;mp['C']=12;mp['D']=13;
mp['E']=14;mp['F']=15;
段使用了 map
,可以方便快捷地将字符转换为数字。平时我们有字符换数字的公式,但是因为这里出现了大写字母,所以使用 map
较为方便。
所以这个题就结束了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】