题目描述
给一个小整数 x 和一个 x 进制的数 S。将 S 转为 10 进制数。对于超过十进制的数码,用 A
,B
,…… 表示。
输入格式
第一行一个整数 x;
第二行一个字符串 S。
输出格式
输出仅包含一个整数,表示答案。
输入输出样例
输入 #1
16 7B输出 #1
123
说明/提示
【数据规模和约定】
保证目标数在十进制下不超过 109,1≤x≤36。
题目难度
普及-
参考思路
我们人类现在最经常的使用十进制。
每逢 10 个就进 1 个就是十进制。
比如十个 1 记作 10。十个 10 记作 100。
对于 k 进制:
- 如果 k≤10,采用的数字为 0 到 k−1。
- 如果 k>10,用完 0−9 后,开始用 A,B,C,D...。
参考代码
#include <bits/stdc++.h>
using namespace std;
int q, a[105];
string S;
int op(char s)
{
if('0'<=s&&s<='9') return s-'0';
return s-'A'+10;
}
int main(void)
{
int ans=0,w=1;
cin>>q>>S;
int l=S.size();
for(int i=l-1;i>=0;i--)a[l-1-i]=op(S[i]);
for(int i=0;i<l+1;i++)
{
ans+=w*a[i];
w*=q;
}
cout<<ans;
return 0;
}