高精度算法

发布时间 2023-07-11 10:41:34作者: ouhq
  1. 高精度加法

  算法核心:

  

c[i]+=a[i]+b[i];
c[i+1]=c[i]/10; //进位到后一位;
c[i]=c[i]%10  //一个位上不会出现大于等于10的数,大于等于10的部分已经进到后一位

#include<bits/stdc++.h>
using namespace std;
  char s1[505],s2[505]; //¿É¼ÆËã10µÄ500´Î·½      
  int a[505],b[505],c[505];
 int main(){
   int lena,lenb,lenc;
   cin>>s1>>s2;
   lena=strlen(s1);
   lenb=strlen(s2);
   for(int i=0;i<lena;i++){
      a[lena-i]=s1[i]-'0';   //½«×Ö·ûת»¯ÎªÊý×Ö£¬²¢ÇÒתÖÃ
    } 
  for(int i=0;i<lenb;i++){
    b[lenb-i]=s2[i]-'0';
    }
  lenc=max(lena,lenb)+1;
  for(int i=1;i<=lenc;i++){
    c[i]+=a[i]+b[i];
    c[i+1]=c[i]/10;
    c[i]=c[i]%10;
        }
  if(c[lenc]==0&&lenc>0) lenc--;//ɾ³ýÇ°µ¼0
  for(int i=lenc;i>0;i--){
    cout<<c[i];  //µ¹ÖÃÊä³ö
    }
}