echo_chenchen 2022-11-27 16:52 采纳率: 80.2%
浏览 0

高精度乘法,为什么这样报错,是下标越界了吗



#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
vector<int> mul(const vector<int>& v1, const vector<int>& v2)
{
    vector<int>v3;
    int t = 0;
    for (int i =v1.size()-1; i >=0; i--)
    {
        for (int j = v2.size()-1; j >= 0; j--)
        {
            v3[i * j] += v1[i] * v2[j];
            v3[i * j + 1] += (v3[i * j] / 10);
            v3[i * j] %= 10;
        }
    }
    while (v3.size() > 1 && v3.back() == 0)
    {
        v3.pop_back();
    }
    return v3;
}
int main()
{
    string a;
    string b;
    vector<int>v1;
    vector<int>v2;
    vector<int>v3;
    cin >> a;
    cin >> b;
    for (int i = a.size() - 1; i >= 0; i--)
    {
        v1.push_back(a[i] - '0');
    }
    for (int i = b.size() - 1; i >= 0; i--)
    {
        v2.push_back(b[i] - '0');
    }
    v3 = mul(v1, v2);
    for (int i = v3.size() - 1; i >= 0; i--)
    {
        cout << v3[i];
    }
}

img

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-11-27 21:16
    关注

    代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
    提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
    单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月27日

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊