进制转换
在ACM题目中经常会有进制装换的问题,自己写的话会比较费时,所以我在这里打算整理一套网上的好用的模板,以供以后比赛用。
10进制转其他进制
函数输入一个10进制的数和需要转换为n进制(2<=n<=16),返回一个字符串
string tran(int m,int n){
string s;
char c;
while(m/n!=0){
if(m%n>=10){
s=char(m%n-10+'A')+s;
}else{
s=char(m%n+'0')+s;
}
m/=n;
}
if(m>=10){
s=char(m-10+'A')+s;
}else{
s=char(m+'0')+s;
}
cout<<s<<endl;
return s;
}
其他进制转10进制
输入一个字符串s和一个字符串的进制n(2<=n<=16),返回一个整型
int trantoten(string s,int n){
int save=0;
int temp=1;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9'){
save=save*n+(s[i]-'0');
}
if(s[i]>='A'&&s[i]<='F'){
save=save*n+(s[i]-'A'+10);
}
if(s[i]>='a'&&s[i]<='f'){
save=save*n+(s[i]-'a'+10);
}
}
cout<<save<<endl;
return save;
}