P1303 A*B Problem

发布时间:2026/10/26 18:15:32
P1303 A*B Problem 题目链接P1303 A*B Problem - 洛谷这是高精乘法模板题目#includebits/stdc.h using namespace std; int main() { string s1,s2; cin s1 s2; if(s1 0 || s2 0) { cout 0; return 0; } int n s1.size(),m s2.size(); vectorint ans(n m); for(int i 0;i n;i) for(int j 0;j m;j) ans[ij] (s1[n-1-i] - 0)*(s2[m-1-j] - 0); for(int i 0;i nm-1;i) { ans[i1] ans[i] / 10; ans[i] % 10; } int top n m - 1; while(ans[top] 0) top--; for(int i top;i 0;i--) cout ans[i]; return 0; }首先a的位数是n b的位数是m那么a*b结果位数不大于 nm原因是位数本质上等于“这个数在 10 的幂之间哪一格”n 位数的范围10^(n-1) ≤ A 10^nm 位数的范围10^(m-1) ≤ B 10^m两边相乘plaintext10^(nm-2) ≤ A×B 10^(nm)所以A×B的范围是下界10^(nm-2)是一个nm-1位数因为 10ᵏ 是 k1 位数上界10^(nm)是nm1位数但注意是A×B 10^(nm)严格小于所以A×B最多是10^(nm) − 1那是nm位数。结论A×B的位数在nm-1到nm之间取最大就是nm。接着就是模拟我们手动乘法的过程哪一位和哪一个相乘落在哪一位....唯一不同的是我们算出的是每一位乘后的和之后再同一的进位处理就好了

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询