zoukankan      html  css  js  c++  java
  • 【转】任意进制转换--(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; } /**************************************/
  • 相关阅读:
    面试经验
    java常见面试题目(三)
    java常见面试题目(二)
    java常见面试题目(一)
    Java编程思想:第2章 一切都是对象
    汇编语言:第九章 转移指令的原理
    汇编语言: 实验七 寻址方式在结构化数据访问中的应用
    汇编语言:第八章 数据处理的两个基本问题
    汇编语言:实验六 实践课程中的程序
    汇编语言:第七章 更灵活定位内存地址的方法
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3335804.html
Copyright © 2011-2022 走看看