• 大数乘法和加法


    #include<stdio.h>
    #include<math.h>
    #define max 500
    
    
    
    int t[max]={0};
    int v[max]={0};
    int b[max]={0};
    void total(int m[],int n[])
    {
    
        int i,j,temp;
        for(i=0;i<max;i++)
        {
            t[i]=m[i]+n[i];
        }
        for(i=0;i<max;i++)
        {
            if(t[i]>=10)
            {
                temp=t[i];
                j=i;
                while(temp!=0)
                {
                    if(i==j)
                        t[j]=t[j]%10;
                    else
                        t[j]+=t[j]%10;
                    j++;
                    temp/=10;
                }
            }
        }
    
    }
    void yidong(int *a,int n,int m)
    {
        int i,j;
        for(i=m-1;i>=0;i--)
        {
            if(i>=n)
                a[i]=a[i-n];
            else
                a[i]=0;
        }
    }
    
    
    int calc(int x,int y,int p[]){
        int a,b,i,j,d,k,flag=0,m,temp;
    
        int abs[max][max]={0},l[max]={0},h[max]={0},n[max]={0};
        if(x<10)
        {
            h[0]=x;
        }
        else{
            temp=x;
            j=0;
            while(temp!=0)
            {
                h[j]=temp%10;
                temp/=10;j++;
            }
        }
    
    
        while(y>1)
        {
            for(i=0;i<max;i++)
            {
                l[i]=h[i]*x;
            }
            for(i=0;i<max;i++)
            {
                if(l[i]<10)
                    abs[i][0]=l[i];
                else{
                    temp=l[i];
                    j=0;
                    while(temp!=0)
                    {
                        abs[i][j]=temp%10;
                        temp=temp/10;
                        j++;
                    }
                }
            }
            for(i=0;i<max;i++)
            {
                yidong(abs[i],i,max);
            }
    
            for(i=0;i<max;i++)
            {
    
                for(j=0;j<max;j++)
                    n[i]+=abs[j][i];
            }
            for(i=0;i<max;i++)
            {
                if(n[i]>=10)
                {
                    temp=n[i];
                    j=i;
                    while(temp!=0)
                    {
                        if(i==j)
                            n[i]%=10;
                        else
                            n[i]+=n[i]%10;
                        j++;
                        temp=temp/10;
    
                    }
                }
            }
    
            for(i=0;i<max;i++)
            {
                h[i]=n[i];
                n[i]=0;
            }
            y--;
        }
        for(i=0;i<max;i++)
            {
                p[i]=h[i];
    
            }
    
    }
    
    
    
    int main()
    {
        int m,d,p,o,i;
    
        scanf("%d",&m);
        scanf("%d",&d);
    
        scanf("%d",&o);
        scanf("%d",&p);
        calc(m,d,v);
        calc(o,p,b);
        total(v,b);
    
    
    
       for(i=max-1;i>=0;i--)
        {
            if(t[i]!=0)
                break;
        }
        for(;i>=0;i--)
            printf("%d",t[i]);
        printf("
    ");
    }

    大数乘法和加法的模拟计算。。。。

    代码比较乱。。。。。。。。。

    主要思想还是数组保存大数以及进位计算。。。。

    新学数组做参数,以及指针的小应用。。。。

    长期不碰c做出来有点虚。。。。。

  • 相关阅读:
    jquery 筛选元素(1)
    jquery操作元素的位置
    jquery 操作css 选择器
    jquery 操作css 尺寸
    jquery 标签中的属性操作
    jquery基本选择器
    jquery表单属性筛选元素
    jquery属性值选择器
    jquery 层级选择器
    jquery的基本选择器
  • 原文地址:https://www.cnblogs.com/jokerspace/p/6178412.html
Copyright © 2020-2023  润新知