C++编程实现五进制转十进制,其中五进制中出现的字符仅有,o,y,e,a,s五种,分别代表数字0,1,2,3,4。
输入:第一行一个数,代表需实现多少个待转换的字符串。后续total行输入。
输出:五进制转换为十进制,或十进制转换为五进制的数据。 ##
#include <iostream>
#include <stdlib.h>
#include <string>
#include <list>
#include <algorithm>
using namespace std;
int str_to_num(string a);
string num_to_str(string a);
int main(){
int total;
cin>>total;
list<string> pool;
string stand = "oyeas";
while(total--){
string tmp;
cin>>tmp;
pool.push_back(tmp);
}
while(!pool.empty()){
//需要进行五进制的转换
if(stand.find((pool.front())[0])!=string::npos){
cout<<str_to_num(pool.front())<<endl;
}
else{
cout<<num_to_str(pool.front())<<endl;
}
pool.pop_front();
}
return 0;
}
int str_to_num(string a){
int ans = 0, tmp=1;
string stand = "oyeas";
for(int i=a.size()-1;i>0;i--){
ans+=stand.find(a[i])*tmp;
tmp*=5;
}
return ans;
}
string num_to_str(string a){
int tmp = stoi(a,0,10);
string stand = "oyeas";
string s="";
while(tmp!=0){
s+=stand[tmp%5];
tmp=tmp/5;
}
reverse(s.begin(),s.end());
return s;
}