题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
递归实现数值转换
可以适当修改实现结果为32位以内的任何数值转换
#include<iostream> using namespace std; int quickpower(int a,int n){ int ans=1; while(n){ if(n&1)ans*=a; a*=a; n=n>>1; } return ans; } int fun(string s,int idx){ if(idx==s.size()-1){ char c=s[idx]; if(c>='A'&&c<='Z')c=tolower(c); int temp= c>='0'&&c<='9' ?c-'0':(c-'a'+10); return quickpower(16, s.size()-1-idx)*temp; } char c=s[idx]; if(c>='A'&&c<='Z')c=tolower(c); int temp= c>='0'&&c<='9' ?c-'0':(c-'a'+10); return quickpower(16, s.size()-1-idx)*temp+fun(s,idx+1); } int main(){ string s; while(cin>>s) cout<<fun(s.substr(2,s.size()-2),0)<<endl; }