$Poj1220/AcWing124 Number Base Convertion$ 进制转换+高精除

Posted forward777

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了$Poj1220/AcWing124 Number Base Convertion$ 进制转换+高精除相关的知识,希望对你有一定的参考价值。

$Poj$   $AcWing$

 

$Description$

技术图片

 

$Sol$

进制转化+高精度除法

$over$

 

$Code$

技术图片
#include<bits/stdc++.h>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define yes(i,a,b) for(Rg int i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define db double
using namespace std;
il int read()

    Rg int x=0,y=1;char c=getchar();
    while(c<0||c>9)if(c==-)y=-1;c=getchar();
    while(c>=0&&c<=9)x=(x<<1)+(x<<3)+c-0;c=getchar();
    return x*y;

const int N=1010;
int T,n,a,b,ct,d[N],as[N];
int main()

    T=read();
    while(T--)
    
        ct=0;a=read(),b=read();
        string s;cin>>s;n=s.length();
        go(i,1,n)
        
            char c=s[i-1];
            if(c>=0 && c<=9)d[n-i+1]=c-0;
            if(c>=A && c<=Z)d[n-i+1]=c-A+10;
            if(c>=a && c<=z)d[n-i+1]=c-a+36;
        
        while(n)
        
            yes(i,n,2)d[i-1]+=d[i]%b*a;d[i]/=b;
            as[++ct]=d[1]%b;d[1]/=b;
            while(n && !d[n])n--;
        
        printf("%d ",a);cout<<s<<endl;printf("%d ",b);
        yes(i,ct,1)
        
            Rg int c=as[i];
            if(c>=0 && c<=9)printf("%d",c);
            if(c>=10 && c<=35)printf("%c",(char)(c-10+A));
            if(c>=36 && c<=61)printf("%c",(char)(c-36+a));
        
        printf("\\n\\n");
    
    return 0;
View Code

 

 

 

以上是关于$Poj1220/AcWing124 Number Base Convertion$ 进制转换+高精除的主要内容,如果未能解决你的问题,请参考以下文章

oracle中number数值类型

POJ1019-Number Sequence-数数。。

POJ 1019 Number Sequence

poj2104K-th Number (主席树)

POJ 2104 K-th Number

POJ 2104 K-th Number