$Poj1220/AcWing124 Number Base Convertion$ 进制转换+高精除
Posted forward777
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了$Poj1220/AcWing124 Number Base Convertion$ 进制转换+高精除相关的知识,希望对你有一定的参考价值。
$Description$
$Sol$
进制转化+高精度除法
$over$
$Code$
![技术图片](/img/jia.gif)
#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;
以上是关于$Poj1220/AcWing124 Number Base Convertion$ 进制转换+高精除的主要内容,如果未能解决你的问题,请参考以下文章