zoukankan      html  css  js  c++  java
  • acwing793. 高精度乘法

    给定两个非负整数(不含前导 0) A 和 B,请你计算 A×B 的值。

    输入格式

    共两行,第一行包含整数 A,第二行包含整数 B。

    输出格式

    共一行,包含 A×B 的值。

    数据范围

    1≤A的长度≤100000,
    0≤B≤10000

    输入样例:

    2
    3
    

    输出样例:

    6
    

    方法一:

    把题给看错了,以为是0≤B的长度≤10000的高精×高精,还算了一下64MB够用个JB。。硬着头皮写了一下,不过这个版本也AC了,想必高精×低精也..,就懒得写了

    #include <bits/stdc++.h>
    using namespace std;
    
    char a[100010], b[100010];
    
    int main() {
        scanf("%s%s", &a, &b);
        int la = strlen(a) - 1, lb = strlen(b) - 1;
        for (int i = 0; i <= la; i++) a[i] -= '0';
        for (int i = 0; i <= lb; i++) b[i] -= '0';
        for (int i = 0; i <= la/2; i++) swap(a[i], a[la-i]);
        for (int i = 0; i <= lb/2; i++) swap(b[i], b[lb-i]);
    
        vector<int> res;
        for (int i = 0; i <= lb; i++) res.push_back(0);
    
        for (int i = 0; i <= la; i++) {
            for (int j = 0; j <= lb; j++) {
                res[j + i] += a[i] * b[j];
            }
            res.push_back(0);
        }
    
        int index = res.size() - 1, c = 0, p;
        while (index > 0 && !res[index]) index--;
        for (int i = 0; i <= index; i++) {
            p = res[i] + c;
            c = p / 10; p %= 10;
            res[i] = p;
        }
        if (c != 0) res[++index] = c;
    
        while (index >= 0) cout << res[index--];
    }
    
  • 相关阅读:
    Mybatis中的动态SQL
    Mybatis核心知识点
    Java8之Stream详解
    多线程知识点总结(二)
    多线程知识点总结(一)
    数据库中的行锁和表锁
    数据库中的sql完整性约束
    数据库中的sql语句总结
    全局变量
    打印 输出 debug
  • 原文地址:https://www.cnblogs.com/nosae/p/15821738.html
Copyright © 2011-2022 走看看