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; } /**************************************/
  • 相关阅读:
    mysql配置时,提示:Failed to start service MYSQL80
    修改NUGET包默认存放位置
    非Hive Metastore Server节点执行load命令时出现“cannot recognize input near '<EOF>' '<EOF>' '<EOF>' in switch database statement”
    微信小程序登录授权及手机号获取
    后台获取 HttpServletResponse 中的值
    Request Payload 后台拦截器读取入参方式
    答题活动小程序
    答题小程序V5.0
    考研刷题小程序V2.0
    答题小程序优化
  • 原文地址:https://www.cnblogs.com/Lee-geeker/p/3335804.html
Copyright © 2011-2022 走看看