zoukankan      html  css  js  c++  java
  • 高精度实现

    #加法

    #include<bits/stdc++.h>
    using namespace std;
    int i,x;
    int main(){
        char a1[600],b1[600];
        int a[600],b[600],c[600];
        int a1_len,b1_len,lenc;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
        cin>>a1>>b1;
        a1_len=strlen(a1);
        b1_len=strlen(b1);
        for(i=0;i<a1_len;i++){
            a[a1_len-i]=a1[i]-48;
        }
        for(i=0;i<b1_len;i++){
            b[b1_len-i]=b1[i]-48;
        }
        lenc=1;
        while(lenc<=a1_len||lenc<=b1_len){
            c[lenc]=a[lenc]+b[lenc]+x;
            x=c[lenc]/10;
            c[lenc]=c[lenc]%10;
            lenc++;
        }
        c[lenc]=x;
        if(c[lenc]==0){
            lenc--;
        }
        for(i=lenc;i>=1;i--){
            cout<<c[i];
        }
        return 0;
    }

    #乘法

    #include<bits/stdc++.h>
    using namespace std;
    char a[3000];
    char b[3000];
    int x[3000];
    int y[3000];
    int m[3000];
    int i;
    int j;
    int len;
    int n;
    int main(){
        cin>>a>>b;
        int lena=strlen(a);
        int lenb=strlen(b);
        for(i=1;i<=lena;i++)
         x[i]=a[lena-i]-48;
        for(i=1;i<=lenb;i++)
        y[i]=b[lenb-i]-48;
    
        for(i=1;i<=lena;i++) {
            for (j=1; j <=lenb; j++)
                m[i+j-1]+=x[i]*y[j];
        }
        for(int i=0;i<lena+lenb;i++){
           
        if(m[i]>9)
        {
            m[i+1]+=m[i]/10;
            m[i]%=10;
        }
        }
        len=lena+lenb;
        while(m[len]==0&&len>1)len--;
        for(i=len;i>=1;i--)cout<<m[i];
        return 0;
    }

    就注意一下倒数第三行,首位去零的操作

  • 相关阅读:
    13-计算属性和侦听器
    12-指令系统介绍
    11-vue的使用
    10-vue的介绍
    09-babel
    08-webpack的介绍
    07-nodejs中npm的使用
    06-Nodejs介绍
    05-面向对象
    Docker结合Jenkins构建持续集成环境
  • 原文地址:https://www.cnblogs.com/NKshen/p/14112066.html
Copyright © 2011-2022 走看看