> 文档中心 > 高精度乘法

高精度乘法


📋 个人简介

🎉大家好,我是3月份新人榜排名第三的 ༺Blog༒Hacker༻
💬支持我:点赞👍+收藏⭐️+留言📝
🌺格言:༺永做优质༒programmer༻

📣题目

【问题描述】
求两个不超过100位的非负整数的积。

【输入数据】
有两行,每行是一个不超过100位的非负整数,没有多余的前导0。

【输出要求】
一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

【输入样例】

1234567890098765432100

【输出样例】

1219326311126352690000

数据规模与约定
不超过100位的非负整数

💯CODE

#include using namespace std;int a[205],b[205],c[410];char s[205];int main(){int na,nb,nc;cin>>s;na=strlen(s);for(int i=0;i<na;++i) {a[na-i-1]=s[i]-'0';}    cin>>s;nb=strlen(s);for(int i=0;i<nb;++i) {b[nb-i-1]=s[i]-'0';}/* 乘法运算 */for(int i=0;i<na;++i)  for(int j=0;j<nb;++j){c[i+j]+=a[i]*b[j];}nc=na+nb;//统一处理进位 for(int i=0;i<410;++i) {c[i+1]+=c[i]/10;c[i]=c[i]%10;} //前导零int flag=0;//0 前导零 当有一个非零数字,flag=1 全部输出 for(int i=409;i>=0;--i){if(c[i]==0 && flag==0) continue;cout<<c[i];flag=1; }if(flag==0) cout<<0; return 0;}

🌺朋友们,点赞是我更新的动力,明天再见,拜拜!!!

在这里插入图片描述

高精度乘法 与50位技术专家面对面 高精度乘法 20年技术见证,附赠技术全景图