【转】任意进制转换--(62进制)


题目:62进制(非大数除法实现)

  '0'-'9'-----0-9

  A-Z-------10-35

  a-z--------36-62

具体说明可以参考此博客

http://www.cppblog.com/kuangbin/archive/2011/08/25/154299.html?opt=admin


在此简短说一下:

   例如  10进制的18 转换为2进制

   被除数        除数         商       余数

     1 8    /    2 ---------09        0    ----------  1轮结束

       9    /     2 --------  4         1    ---------   2轮结束

       4   /      2--------   2         0     ---------  3轮结束

      2   /       2 --------  1         0    ---------   4轮结束

      1  /        2 --------  0         1   ----------   5轮结束

      0  -----------结束

  二进制  10010(18) 


#include<iostream> #include<cstring> #include<cstdio> #define LL __int64 #define N 15000 #define M 50005 #define MOD 1000000000 // #define wei 9 //压的位数 using namespace std; LL a[N],b[N],ans[N]; char c[M],d[M]; /*************存储处理部分******************/ int StrToNum(char t[],LL tt[]) //返回存储长度 { int len=0,t_len=strlen(t); int i,cnt=1; LL d=1,temp=0; for(i=t_len-1;i>=0;i--) { temp+=(t[i]-'0')*d; if(cnt==wei) { tt[len++]=temp; temp=0; cnt=d=1; } else { cnt++; d=d*10; } } tt[len++] = temp; //for(i=0; i<len; i++) // printf("%I64d ", tt[i]); //cout<<endl; return len; } /************************************/ /************乘法部分*************/ void mult(char c[],char d[]) { int a_len,b_len,i,j; LL flag,temp; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(ans, 0, sizeof(ans)); a_len= StrToNum(c, a); b_len= StrToNum(d, b); for(i=0;i<a_len;i++) { flag=0; for(j=0;j<b_len;j++) { temp=ans[i+j]+a[i]*b[j]+flag; // printf("%I64d ", temp); ans[i+j]=temp%MOD; flag=temp/MOD; } while(flag) { temp = ans[i+j]+ flag; ans[i+j]=temp%MOD; flag=temp/MOD; } } /***********************************/ /***********输出部分**************/ a_len=a_len+b_len+2; while(!ans[a_len]&&a_len>0)a_len--; if(a_len>=0) printf("%I64d", ans[a_len--]); while(a_len>=0) printf("%09I64d", ans[a_len--]); printf(" "); /*********注意输出格式的控制***************/ } /**************************************/ /************主函数部分***************/ int main() { while(scanf("%s%s",c,d)!=EOF) { mult(c,d); } return 0; } /**************************************/
原文地址:https://www.cnblogs.com/Lee-geeker/p/3335804.html