⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dzs.cpp

📁 自己做的另一个大整数相乘小算法.....有很多不足之处请大家指教
💻 CPP
字号:
#include<iostream>
using namespace std;

int main()
{
        int a[50000+5];
        int b[50000+5];
        int c[2*50000+5] ;
        int bb;
        int i,j,k,ia,ib;
        char ch[5000+5];
        int l,la,lb;
        int num=50000;
    int odd=1,inc,ifout;
        while(gets(ch))
        {
                if(odd==1)
                {
                        l=strlen(ch);
                        la=l;
                        for(i=1;i<=la+10;i++)
                        {
                                if(i<=l)
                                {
                                        a[i]=int(ch[l-i])-48;
                                }
                                else a[i]=0;
                        }
                        odd=0;
                }
                else
                {
                        l=strlen(ch);
                        lb=l;
                        for(i=1;i<=lb+10;i++)
                        {
                                if(i<=l)
                                {
                                        b[i]=int(ch[l-i])-48;
                                }
                                else b[i]=0;
                        }
                        odd=1;
                        for(i=1;i<=la+lb+10;i++)
                                c[i]=0;
          

           for(i=1;i<=la;i++)
                   {
                           for(j=1;j<=lb;j=j+8)
                           {
                                   bb=b[j]+10*b[j+1]+100*b[j+2]+1000*b[j+3]+10000*b[j+4]+100000*b[j+5]+1000000*b[j+6]+10000000*b[j+7];
                                   c[i+j-1]+=a[i]*bb;
                                   c[i+j+3]+=c[i+j-1]/10000;
                                   c[i+j-1]=c[i+j-1]%10000;
                           }

                   }
                   inc=0;
                   for(i=1;i<=la+lb+8;i++)
                   {
                           c[i]=c[i]+inc;
                           inc=c[i]/10;
                           c[i]=c[i]%10;
                   }
                   ifout=0;
                 
                           i=la+lb;
                           while(i>=1)
                           {
                                   if(c[i]!=0)ifout=1;

                                   if(ifout==1)cout<<c[i];
                     i--;
                           }
                           if(ifout==0)cout<<0;
                           cout<<endl;
                }
        }
        return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -