题目
思路
分析题目可知,此题可以用到大写字母,也就是从A开始,分别表示11往后的数字。
那么就用一个for循环,将零到九划分为一个等级,将A到Z划分为一个等级。
for(int i=0;i<str.length();i++){
if(str[i]>='0'&&str[i]<='9')y[i]=str[i]-'0';
else y[i]=str[i]-'A'+10;
最后输出的是,x进制下的一个带字符串的数或者不带字符串的数,转变为十进制后的数。
int main(){
int x;
int str;
cin>>x>>str;
cout<<e(str,x);//进制转换
}
完整代码
#include<bits/stdc++.h>
using namespace std;
int e(string str,int x){
int y[str.length()],w=1;
int ji=0;
for(int i=0;i<str.length();i++){
if(str[i]>='0'&&str[i]<='9')y[i]=str[i]-'0';
else y[i]=str[i]-'A'+10;
}
for(int i=str.length()-1;i>=0;i--){
ji+=y[i]*w;
w*=x;
}
return ji;
}
int main(){
int x;
string str;
cin>>x>>str;
cout<<e(str,x);
}