• 高精度乘法


    描述

    高精度乘法
    输入:两行,每行表示一个非负整数(不超过10000位)
    输出:两数的乘积。

    样例输入:

    99
    101
    Copy

    样例输出:

    9999
    Copy

    限制

    各个测试点1s

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <algorithm>
    #include <vector>
     
    using namespace std;
    #define Max 10001
     
    void BigMul(string A, string B)
    {
        int a[Max] = {0}, b[Max] = {0}, sum[Max*2] = {0};
        int length_a = A.length();
        int length_b = B.length();
        for(int i = 1, j = length_a-1; i <= length_a; i++, j--)
            a[i] = A[j] - '0';
        for(int i = 1, j = length_b-1; i <= length_b; i++, j--)
            b[i] = B[j] - '0';
        memset(sum, 0, sizeof(sum));
        int length_sum = 0;
        for(int i = 1; i <= length_a; i++)    //用数组模拟运算
        {
            for(int j = 1, t = i-1; j <= length_b; j++)
            {
                sum[++t] += b[j]*a[i];
                length_sum = t;
            }
        }
        for(int i = 1; i <= length_sum; i++)  //进位处理
        {
            if(sum[i] >= 10)
            {
                if(sum[length_sum] >= 10)
                    length_sum++;
                sum[i+1] += sum[i]/10;
                sum[i] %= 10;
            }
        }
        while(sum[length_sum] == 0 && length_sum != 1)   //高位去零
            length_sum--;
        for(int i = 1, j = length_sum; i <= length_sum; i++, j--)
            cout << sum[j];
    }
    int main()
    {
        string A, B;
        while(cin >> A >> B)
            BigMul(A, B);
        return 0;
    }
  • 相关阅读:
    mysql_Navicat数据库破解
    SpringBoot+ Mybatis 搭建
    SSH框架搭建
    SSM 框架搭建
    android 网络_网络图片查看器
    android 网络_网络源码查看器
    android ListView_显示数据库数据
    android ListView_新闻案例
    android ListView的怪异现象
    android ListView_Tiger
  • 原文地址:https://www.cnblogs.com/tanjiaqi/p/7529316.html
Copyright © 2020-2023  润新知