进制转换模板:其中>=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