题目
思路
分析题目可知,此题可以用到大写字母,也就是从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);
}