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 谢谢大佬指点(感激不尽)
也恭喜你收获一枚小粉丝