题目描述
给一个小整数 x 和一个 x 进制的数 S。将 S 转为 10 进制数。对于超过十进制的数码,用 A
,B
,…… 表示。
输入格式
第一行一个整数 x;
第二行一个字符串 S。
输出格式
输出仅包含一个整数,表示答案。
输入输出样例
输入 #1
16 7B
输出 #1
123
说明/提示
【数据规模和约定】
保证目标数在十进制下不超过 ,1≤x≤36。
思路
我们知道:S(x)——S(10) = Sn*+Sn-1*.......+S1*
所以:可以先把s里的'A'~'Z'转换为10~35,再根据以上公式求S(10)
AC代码
#include <bits/stdc++.h>using namespace std;int main()
{int a[10000],x;string s;cin>>x;cin>>s;int len=s.size();for(int i=len-1;i>=0;i--){if(s[i]>='A' && s[i]<='Z'){a[len-i]=s[i]-55;}else{a[len-i]=s[i]-48;}}int q=1,p=0; for(int i=1;i<=len;i++){p+=a[i]*q;q*=x;}cout<<p<<endl;return 0;
}