80分了 会有大佬来捞捞吗55555555 20分没人捞

P1303 A*B Problem

kda_1111 @ 2022-09-14 17:00:37

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[2005],b[2005],d[2005][2005],e[2005],t=0;
void init(int c[])
{
    string s;
    cin>>s;
    c[0]=s.length();
    for(int i=1;i<=c[0];++i)
    c[i]=s[c[0]-i]-'0';
}   
int main()
{
    init(a);init(b);
    for(int i=1;i<=2005;++i)
    {
        for(int j=1;j<=2005;++j)
        {
            d[i][j]+=a[i]*b[j];
            if(d[i][j]>=10)
            {
                d[i][j+1]+=d[i][j]/10;//先坐哪一步? 
                d[i][j]%=10;
            }
        }
    }
    for(int m=1;m<=2005;++m)//这里二维数组怎么加在一起  
    {
         for(int n=1;n<=m;++n)
         {
            e[m]+=d[n][m-n];
         }
         while(e[m]>=10)
         {
            e[m]-=10;
            e[m+1]+=1;
         }
    }
    for(int i=2005;i>=1;--i)
    {
        if(e[i]!=0)
        {
            t=i;
            break;
        }
    }
    if(t==0) cout<<"0";
    else
    {
        for(int j=t;j>1;--j)
        cout<<e[j];
    }
    return 0;
}

by _SkyDream_ @ 2022-09-14 17:27:59

大概是...有一个是0就特判0?


by kda_1111 @ 2022-09-14 19:56:42

@horray_for_bfs_dfs 不是 我知道了 是结果数组开小了 2000位*2000位应该开4000位


by kda_1111 @ 2022-09-14 20:06:21

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[4014],b[4014],d[4014][4014],e[4014],t=0;
void init(int c[])
{
    string s;
    cin>>s;
    c[0]=s.length();
    for(int i=1;i<=c[0];++i)
    c[i]=s[c[0]-i]-'0';
}   
int main()
{
    init(a);init(b);
    for(int i=1;i<=4014;++i)
    {
        for(int j=1;j<=4014;++j)
        {
            d[i][j]+=a[i]*b[j];
            if(d[i][j]>=10)
            {
                d[i][j+1]+=d[i][j]/10;//先坐哪一步? 
                d[i][j]%=10;
            }
        }
    }
    for(int m=1;m<=4014;++m)//这里二维数组怎么加在一起  
    {
         for(int n=1;n<=m;++n)
         {
            e[m]+=d[n][m-n];
         }
         while(e[m]>=10)
         {
            e[m]-=10;
            e[m+1]+=1;
         }
    }
    for(int i=4014;i>=1;--i)
    {
        if(e[i]!=0)
        {
            t=i;
            break;
        }
    }
    if(t==0) cout<<"0";
    else
    {
        for(int j=t;j>1;--j)
        cout<<e[j];
    }
    return 0;
}

by grgrgr @ 2022-10-02 17:08:21

@kda_1111 改语言(


|