当前位置: 首页 > news >正文

高精度计算(乘)

引言
此篇是专栏信息学杂谈第八篇高精度计算(乘),展示了关于C++如何实现高精度乘法的代码

正文:

  • 乘法进位
c[i + j - 1] += a[i] * b[j] + x; //x为之前进位
x = c[i + j - 1] / 10;
c[i + j - 1] %= 10;

完整代码

#include <iostream>
using namespace std;
int main() {ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);//快读string s1, s2, str;int a[10000], b[10000], c[100001];cin >> s1 >> s2;int len1 = (int) s1.length(), len2 = (int) s2.length();if (len1 < len2) {swap(s1, s2);// 交换swap(len1, len2);}// 反向存储for (int i = 1; i <= len1; i++) {a[i] = s1[len1 - i] - '0';}for (int i = 1; i <= len2; i++) {b[i] = s2[len2 - i] - '0';}// 计算int x = 0;for (int i = 1; i <= len1; i++) {for (int j = 1; j <= len2; j++) {c[i + j - 1] += a[i] * b[j] + x; //x为之前进位x = c[i + j - 1] / 10;c[i + j - 1] %= 10;}}c[len1 + len2] = x; //最高位特判// 删除前导0int len = len1 + len2;while (c[len] == 0 && len > 0) {len--;}//反向存储for (int i = len; i > 0; i--) {str += to_string(c[i]);}cout << str;//输出return 0;
}

水文完结!
Tip:为了获得更深入的学习体验,请参考相关教程或书籍,了解C++语言的更多基本结构和基本语法。

在这里插入图片描述
每篇图片分享
图片来自inscode上的开源程序
濒危动物:三指树獭

http://www.lryc.cn/news/474161.html

相关文章:

  • 在vue中 如何实现跨域
  • 计算机考研,选择西安交通大学还是哈工大?
  • 微积分复习笔记 Calculus Volume 1 - 4.4 The Mean Value Theorem
  • Cpp多态机制的深入理解(20)
  • (六)Python结构数据类型
  • C++进阶-->多态(Polymorphism)
  • python实战项目51:selenium结合requests获取某众点评评论
  • 面试准备第一版ssm spring-springmvc
  • Ubuntu学习笔记 - Day1
  • 挑战Java面试题复习第4天,坚持就是胜利
  • Android 虚拟化框架(AVF)指南
  • day-77 超级饮料的最大强化能量
  • 有道小P 1.0.8 | 完全免费的AI全科学习助手,家长的好帮手
  • vue项目中如何在路由变化时增加一个进度条
  • 如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令以及Vscode中的环境路径配置中找不到gcc
  • 3-petalinux2018.3 摸索记录 - 命令驱动 _ 交叉编译链
  • 【二分查找】——模板
  • 从可逆计算看DSL的设计要点
  • axios竟态问题
  • 如何批量注册多个Outlook邮箱账号并避免关联
  • 如何在安卓設備上設置全局代理?
  • 操作系统实验记录
  • FastAPI 路径参数详解:动态路径与数据校验的灵活实现
  • 【STM32】SD卡
  • 我一口气记录下整个接口自动化测试过程!
  • 【VS中Git同步提交 报错:访问.vs/FileContentIndex/xxx.vsidx权限不允许】
  • Linux下Nginx的安装与使用
  • 飞机布雷盖航程公式
  • 在K8s平台部署个人博客
  • git入门教程10:git性能优化