高精度的模拟题(大数相乘)

题目链接
(手动点击跳转)


1|0题目分析:同样是高精度模拟的题

#include <iostream>
#include <cstring>
using namespace std;
#define maxn 5020
int a[maxn],b[maxn],c[maxn];
int main()
{
string A,B;
cin >> A >> B;
int lena = A.length(),lenb = B.length();
for(int i=lena-1,j=1;i>=0;i--,j++){
a[j] = A[i]-'0';
}
for(int i=lenb-1,j=1;i>=0;i--,j++){
b[j] = B[i] - '0';
}
for(int i=1;i<=lena;i++){
for(int j=1;j<=lenb;j++){
c[i+j-1] += a[i]*b[j]; //i位和j位数值的贡献值,通过规律发现会累计到i+j-1位上去
}
}
for(int i=1;i<=lena+lenb;i++){
c[i+1] += c[i]/10; //模拟进行进位处理
c[i] %=10;
}
int len = lena +lenb; //两数乘积之和的位数小于等于两数位数之和
while(!c[len]){ //通过循环去除前导 0
len--;
}
for(int i=max(1,len);i>0;i--){ //max(1,len)为了避免0乘以一个数,没有输出的特殊情况,保证至少有一个数输出
cout << c[i];
}
return 0;
}

__EOF__

本文作者DeepBrainBoy
本文链接https://www.cnblogs.com/tccjx/articles/15996728.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   TCcjx  阅读(45)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏