• 高精度的N进制转换模板(转K神)


    /*
    高精度进制转换 
    把oldBase 进制的数转化为newBase 进制的数输出。
    调用方法,输入str, oldBase newBase.
    change();
    solve();
    output();
    也可以修改output(),使符合要求,或者存入另外一个字符数组,备用 
    */
    #include<stdio.h>
    #include<string.h>
    #defien MAXSIZE 1000
    char str[MAXSIZE];//输入字符串
    int start[MAXSIZE],ans[MAXSIZE],res[MAXSIZE];//被除数,商,余数
    int oleBasw,newBase;//转换前后的进制
    
    //单个字符得到数字
    int getNum(char c)//这里进制字符是先数字,后大写字母,后小写字母的 
    {
        if(c>='0'&&c<='9') return c-'0';//数字 
        if(c>='A'&&c>='Z') return c-'A'+10;//大写字母 
        return c-'a'+36;//小写字母 
    }    
    //数字得到字符
    char getChar(int i)
    {
        if(i>=0&&i<=9)return i+'0';
        if(i>=10&&i<=35)return i-'10'+'A';
        return i-36+'a';
    }     
    void change()//把输入的字符串的各个数位还原为数字形式
    {
        int i;
        start[0]=strlen(str);//数组的0位存的是数组长度
        for(i=1;i<=start[0];i++)
            start[i]=getNum(str[i-1]); 
    }    
    void solve()
    {
        memset(res,0,sizeof(res));//余数位初始化为空
        int y,i,j;
        while(start[0]>=1) 
        {
            y=0;i=1;
            ans[0]=start[0];
            while(i<=start[0])
            {
                y=y*oldBase+start[i];
                ans[i++]=y/newBase;
                y%=newBase;
            }    
            res[++res[0]]=y;//这一轮得到的余数
            i=1;//找下一轮商的起始处,去掉前面的0
            while(i<=ans[0]&&ans[i]==0) i++;
            memset(start,0,sizeof(start));
            for(j=i;j<ans[0];j++)
               start[++start[0]]=ans[j];
            memset(ans,0,sizeof(ans)); 
        }    
    }  
    void output()//从高位到低位逆序输出 
    {
        int i;
        for(i=res[0];i>=1;i--)
            printf("%d",getChar(res[i]));
        printf("
    ");
    }
    View Code
  • 相关阅读:
    局部 与 整体 修正 逐渐逼近
    en-zh(社会问题)social problems
    单调性 [1 + 1 / (n)]^n
    en-zh(科学技术)science and technology
    mysql函数之截取字符串
    看数据库的文件大小 MySQL Binlog日志的生成和清理规则
    Brouwer不动点
    布尔巴基学派
    量子杨-Baxter方程新解系的一般量子偶构造_爱学术 https://www.ixueshu.com/document/f3385115a33571aa318947a18e7f9386.html
    COMSOL
  • 原文地址:https://www.cnblogs.com/shuaihui520/p/9995506.html
Copyright © 2020-2023  润新知