高精度乘高精度

【题目描述】

  输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。

【输入】

  输入两个高精度正整数M和N。

【输出】

  求这两个高精度数的积。

【输入样例】

36
3

【输出样例】

108

复制代码
#include<iostream>
#include<cstring>
using namespace std;

int main()
{
    char a[201], b[201];
    int a2[201], b2[201];
    cin >> a >> b;
    // 字符转为整数。 
    int lena = strlen(a), lenb = strlen(b);
    for(int i=0; i<=lena-1; i++)
        a2[lena-i] = a[i] - 48; // 下标从1开始的。 
    for(int i=0; i<=lenb-1; i++)
        b2[lenb-i] = b[i] - 48; 
    // 乘法。 
    int c[402]={};
    for(int i=1; i<=lenb; i++)
    {
        int jw=0;
        for(int j=1; j<=lena; j++)
        {
            int temp = a2[j]*b2[i] + jw + c[i+j-1];
            jw = temp/10;
            c[i+j-1] = temp%10;
        }
        // 处理每次乘数的某一位乘以被乘数的结果的最高位。 
        c[lena+i] = jw; // 不管进位到最高位的数字是否为零,直接赋值。 
    }
    // 处理乘积的最高位: 最高位的下标等于lena + lenb 。
    int lenc = lena + lenb; 
    if(c[lenc]==0) lenc--;
    for(int i=lenc; i>=1; i--)
        cout << c[i];
    return 0;
}
复制代码
posted @   Hi,小董先生  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示