进制转换模板:其中>=10的数中A到Z表示,其中2<=x,y<=36。
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <list>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#define PI acos(-1.0)
#define mem(a,b) memset(a,b,sizeof(a))
#define sca(a) scanf("%d",&a)
#define sc(a,b) scanf("%d%d",&a,&b)
#define pri(a) printf("%d\n",a)
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define MM 1000005
#define MN 100010
#define INF 55566677
#define eps 1e-7
using namespace std;
typedef long long ll;
string transform(int x,int y,string s)
{
string res="";
int sum=0,i,l=s.length();
for(i=0;i<l;i++)
{
if(s[i]==‘-‘) continue;
if(s[i]>=‘0‘&&s[i]<=‘9‘) sum=sum*x+s[i]-‘0‘;
else sum=sum*x+s[i]-‘A‘+10;
}
while(sum)
{
char tmp=sum%y;
sum/=y;
if(tmp<=9) tmp+=‘0‘;
else tmp=tmp-10+‘A‘;
res=tmp+res;
}
if(res.length()==0) res="0";
if(s[0]==‘-‘) res=‘-‘+res;
return res;
}
int main()
{
int x=10,y;
string s;
while(cin>>s>>y)
{
cout<<transform(x,y,s)<<endl;
}
return 0;
}
原文:http://blog.csdn.net/u011466175/article/details/22988325