#include <iostream>
using namespace std;
int qmi(int a,int b){
int res = 1;
while(b){
if(b&1){
res = res*a;
}
b>>=1;
a*=a;
}
return res;
}
int main() {
string s;
cin>>s;
int len = s.length();
int res = 0;
int idx = 0;
for(int i = len-1;i>=2;i--){
if(s[i]>='0'&&s[i]<='9'){
res+=(s[i]-'0')*qmi(16,idx);
}
if(s[i]>='A'&&s[i]<='Z'){
res+=(s[i]-'A'+10)*qmi(16,idx);
}
idx++;
}
cout<<res<<'\n';
}
// 64 位输出请用 printf("%lld")
使用快速幂计算16的次方,然后用每个字符所代表的数字相乘再相加即可,注意大写字母与‘A’的差值要加10



京公网安备 11010502036488号