不知道为什么通不过

P1303 A*B Problem

SevenYoshy @ 2023-06-24 20:36:51

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a,b;
    cin>>a>>b;
    int c[a.size()],d[b.size()],e[a.size()+b.size()];
    memset(e,0,sizeof(e,0,sizeof(a)));
    for(int i=0;i<a.size();i++)
        c[i]=a[i]-48;
    for(int i=0;i<b.size();i++)
        d[i]=b[i]-48;
    for(int i=0;i<a.size();i++)
    {
        for(int j=0;j<b.size();j++)
        {
            e[i+j]=c[i]*d[j]%10;
            e[i+j+1]=c[i]*d[j]/10;
        }
    }
    for(int i=0;i<a.size()+b.size();i++)
    {
        if(e[i]>10)
        {
            e[i+1]++;
            e[i]-=10;
        }
    }
    bool f=1;
    if(e[a.size()+b.size()]==0)
        f=0;
    for(int i=a.size()+b.size()-1+f;i>=0;i--)
    {
        cout<<e[i];
    }
}

案例一个都没对

自测 连6*6都算错了

希望大家能尽快回复

第一个解决我问题的人将会得到一个关注


by 2huk @ 2023-06-24 20:45:35

@SevenYoshy memset(e,0,sizeof(e,0,sizeof(a))); 这是神马奇怪玩意


by 2huk @ 2023-06-24 20:55:11

@SevenYoshy 你的代码小错误好多,这是改好的:

#include<bits/stdc++.h>
using namespace std;
const int N = 4010;
int c[N], d[N], e[N];
int main()
{
    string a,b;
    cin>>a>>b;
    for(int i=0;i<a.size();i++)
        c[a.size() - i]=a[i]-48;
    for(int i=0;i<b.size();i++)
        d[b.size() - i]=b[i]-48;
    for(int i=1;i<=a.size();i++)
    {
        for(int j=1;j<=b.size();j++)
        {
            e[i + j - 1] += c[i] * d[j];
        }
    }
    for(int i=1;i<a.size()+b.size();i++)
    {
        if(e[i]>9)
        {
            e[i+1] += e[i] / 10;
            e[i]%=10;
        }
    }
    int len = a.size() + b.size();
    while (!e[len] && len > 1) -- len;
    for(int i=len;i>=1;i--)
    {
        cout<<e[i];
    }
}

字符串变成数组需要倒序存储


by 2huk @ 2023-06-24 20:55:46

@SevenYoshy 还有一些有关进位的奇奇怪怪的东西


by SevenYoshy @ 2023-06-24 21:08:22

@2huk 谢谢大佬指点(感激不尽)

也恭喜你收获一枚小粉丝


|