[模板]高精度
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<cstdio> 2 #include<cstring> 3 int main(){ 4 char a[242],b[242]; 5 int xa[242],xb[242],xc[242]; 6 int la,lb,ls,ll; 7 scanf("%s%s",a,b); 8 la=strlen(a);lb=strlen(b); 9 for(int i=0;i<la;i++)xa[i]=a[la-i-1]-'0'; 10 for(int i=0;i<lb;i++)xb[i]=b[lb-i-1]-'0'; 11 if(la>lb)ls=lb;else ls=la;ll=la+lb-ls; 12 xc[ll]=0; 13 for(int i=0;i<ls;i++)xc[i]=xa[i]+xb[i]; 14 if(ls!=ll)for(int i=ls;i<ll;i++)if(la>lb)xc[i]=xa[i];else xc[i]=xb[i]; 15 for(int i=0;i<ll;i++)if(xc[i]>=10){xc[i]-=10;xc[i+1]+=1;} 16 if(xc[ll])printf("1"); 17 for(int i=ll-1;i>=0;i--)printf("%d",xc[i]); 18 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<cstdio> 2 #include<cstring> 3 int main(){ 4 char a[242],b[242],xbc[242]; 5 int xa[242],xb[242],xc[242]; 6 int la,lb,k; 7 memset(xa,0,sizeof(xa)); 8 memset(xb,0,sizeof(xb)); 9 memset(xc,0,sizeof(xc)); 10 scanf("%s%s",a,b); 11 la=strlen(a); 12 lb=strlen(b); 13 if(la<lb||(la==lb&&strcmp(a,b)<0)){ 14 printf("-"); 15 strcpy(xbc,a); 16 strcpy(a,b); 17 strcpy(b,xbc); 18 k=la;la=lb;lb=k; 19 } 20 if(la==lb&&strcmp(a,b)==0){printf("0");return 0;} 21 for(int i=0;i<la;i++)xa[i]=a[la-i-1]-'0'; 22 for(int i=0;i<lb;i++)xb[i]=b[lb-i-1]-'0'; 23 for(int i=0;i<lb;i++)xc[i]=xa[i]-xb[i]; 24 for(int i=lb;i<la;i++)xc[i]=xa[i]; 25 for(int i=0;i<la;i++)if(xc[i]<0){ 26 xc[i]+=10; 27 xc[i+1]--; 28 } 29 int first=1; 30 for(int i=la-1;i>=0;i--){ 31 if(xc[i]==0&&first==1)continue; 32 printf("%d",xc[i]); 33 first++; 34 } 35 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<cstdio> 2 #include<cstring> 3 int main(){ 4 char a[1002],b[1002]; 5 int xa[1002],xb[1002],xc[2004]; 6 int la,lb,first=0,ll; 7 scanf("%s%s",a,b); 8 la=strlen(a);lb=strlen(b); 9 ll=la+lb; 10 for(int i=0;i<ll;i++)xc[i]=0; 11 for(int i=0;i<la;i++)xa[i]=a[la-i-1]-'0'; 12 for(int i=0;i<lb;i++)xb[i]=b[lb-i-1]-'0'; 13 for(int i=0;i<la;i++)for(int j=0;j<lb;j++)xc[i+j]+=xa[i]*xb[j]; 14 for(int i=0;i<ll;i++){xc[i+1]+=xc[i]/10;xc[i]%=10;} 15 for(int i=ll-1;i>=0;i--){ 16 if(first==0&&xc[i]==0)continue; 17 printf("%d",xc[i]); 18 first++; 19 } 20 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<cstdio> 2 #include<cstring> 3 int a[205],b[205],c[205]; 4 bool ty(int a[],int b[],int x,int lena,int lenb){ 5 bool flag=true; 6 for(int i=0;i<lenb;i++)a[lenb+x-i-1]-=b[lenb-1-i]; 7 for(int i=lenb-1;i>=0;i--)if(a[lenb+x-i-1]<0){a[lenb+x-i-1]+=10;a[lenb+x-i]--;if(a[lenb+x]<0){flag=false;break;}} 8 for(int i=0;i<lenb;i++)a[lenb+x-i-1]+=b[lenb-1-i]; 9 for(int i=lenb-1;i>=0;i--)if(a[lenb+x-i-1]>=10){a[lenb+x-i-1]-=10;a[lenb+x-i]++;} 10 return flag; 11 } 12 void minus(int a[],int b[],int x,int lenb){ 13 for(int i=0;i<lenb;i++)a[lenb+x-i-1]-=b[lenb-i-1]; 14 for(int i=lenb-1;i>=0;i--)if(a[lenb+x-i-1]<0){a[lenb+x-i-1]+=10;a[lenb+x-i]--;} 15 } 16 int main(){ 17 char a1[205],b1[205]; 18 int n,lena,lenb,com=0,first=0; 19 scanf("%s%s",a1,b1); 20 lena=strlen(a1);lenb=strlen(b1); 21 for(int i=0;i<lena;i++)a[lena-i-1]=a1[i]-'0'; 22 for(int i=0;i<lenb;i++)b[lenb-i-1]=b1[i]-'0'; 23 if(lena>=lenb)for(int x=lena-lenb;x>=0;x--)while(ty(a,b,x,lena,lenb)){minus(a,b,x,lenb);c[x]++;} 24 for(int i=202;i>=0;i--){ 25 if(c[i])first++; 26 if(first)printf("%d",c[i]); 27 } 28 if(first==0)printf("0"); 29 }
$Fate \ is \ Fake$