核心

  • 数据的接收方法和存储方法
  • 高精度位数的确定
  • 进位错位处理
  • 商和余数的求法

    数据的接收方法和存储方法

    1. void init(int a[])
    2. //传入一个数组
    3. {
    4. string s;
    5. cin>>s;
    6. //读取字符串
    7. len=s.length();
    8. //计算字符串的长度
    9. for(i=1;i<=len;i++)
    10. a[i]=s[len-i]-'0';
    11. //数串转换为数组并倒序存储
    12. }

    高精度位数的确定

    s.length()

    进位错位处理

    加法进位:
    1. c[i]=a[i]+b[i];
    2. if(c[i]>=10)
    3. {
    4. c[i]%=10
    5. ++c[i+1]
    6. }
    减法借位:
    1. if(a[i]<b[i])
    2. {
    3. --a[i+1];
    4. a[i]+=10;
    5. }
    6. c[i]=a[i]-b[i]
    乘法进位
    1. c[i+j-1]=a[i]*b[j]+x+[i+j-1];
    2. x=c[i+j-1]/10;
    3. c[i+j-1]%=10;
    商和余数的求法:
    看被除数和除数的位数情况处理