题解 | #大数乘法#

大数乘法

https://www.nowcoder.com/practice/6b668316f0ac4421ae86d7ead4301b42

#include <iostream>
#include <cstring>
#include <string>
#include<algorithm>
using namespace std;
const int N = 100010;
int a[N], b[N], c[2 * N];
string s1, s2;
int main() {
    cin >> s1 >> s2;
    string str;
    int len1 = s1.size(), len2 = s2.size();
    if (s1[0] == '-') {
        for (int i = 1; i < len1; i++) a[i - 1] = s1[len1 - i] - '0';
        len1--;
    }
    else {
        for (int i = 0; i < len1; i++) a[i] = s1[len1 - i - 1] - '0';
    }
    if (s2[0] == '-') {
        for (int i = 1; i < len2; i++) b[i - 1] = s2[len2 - i] - '0';
        len2--;
    }
    else {
        for (int i = 0; i < len2; i++) b[i] = s2[len2 - i - 1] - '0';
    }
    for (int i = 0; i < len1; i++)
        for (int j = 0; j < len2; j++)
            c[i + j] += a[i] * b[j];
    int k = 0;
    while (c[k] || k < len1 + len2 - 1) 
    {
        c[k + 1] += c[k] / 10;
        c[k] %= 10;
        k++;
        
    }
    while (k > 0 && !c[k]) k--;
    if ((s1[0] == '-' && s2[0] != '-') || (s1[0] != '-' && s2[0] == '-')) cout << '-';
    for (int i = k; i >= 0; i--)  str.push_back(c[i] + '0');
    cout << str;
    return 0;
}

全部评论

相关推荐

头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务