高精度加法,减法,乘法,除法(下)(C语言)

前言
上一篇博客我们分享了高精度加法,减法,这一期我将为大家讲解高精度乘法和高精度除法。那让我们开始吧!
对加法和减法感兴趣的话就点我

在这里插入图片描述

文章目录

  • 1,乘法
  • 2,除法
  • 3,尾声

1,乘法

让我们想想我们平时做数学时遇见乘法是怎么做的。以下图为例。
在这里插入图片描述
高精度乘法也是这样的一个思路,首先我们先把a和b的值储存进两个数组之中。然后将两个数组翻转之后,让a乘以b的每一位(从个位开始),然后错位相加。最后即可得到结果。
下面我用代码的方式来讲解:

#include <stdio.h>
#include<string.h>
void my_reverse(char* arr, int len)//翻转函数
{for (int i = 0; i < len - 1; i++, len--){char temp = arr[i];arr[i] = arr[len - 1];arr[len - 1] = temp;}
}
void print_mul(int len1, int len2, char* arr1, char* arr2,int* mul)
{for (int i = 0; i < len2; i++){for (int j = 0; j < len1; j++)//让arr1的每一位都乘以arr2的第i位{//高精度加法mul[i + j] += (arr1[j]-'0') * (arr2[i]-'0');//将结果存放在mul中mul[i + j + 1] += mul[i + j] / 10;mul[i + j] %= 10;}}while (mul[len1 + len2] == 0&&len1+len2 > 0)//去除前缀多余的0len1--;for (int i = len1 + len2; i >= 0; i--)//打印结果printf("%d", mul[i]);
}
int main()
{char arra[10100] = { 0 }, arrb[10100] = { 0 }; int arrmul[10010] = { 0 };//分别储存a,b的值和a*b的值scanf("%s %s", arra, arrb);int lena = strlen(arra);//计算a和b的长度int lenb = strlen(arrb);my_reverse(arra, lena);//将a和b进行翻转方便进行运算my_reverse(arrb, lenb);print_mul(lena, lenb, arra, arrb, arrmul);return 0;
}

我们学习之后可以去洛谷进行测试(洛谷 P1303 A*B Problem)

2,除法

除法在这里,点我点我!

3,尾声

这样我们的高精度算法就结束了,博主还将继续更新其他算法和编程学习的讲解。如果觉得感兴趣要记得关注下博主哦~。如果觉得本篇内容讲得不错的话请给博主一个赞和收藏吧。那么我们下期再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/258257.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux系统化学习】进程地址空间 | 虚拟地址和物理地址的关系

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统化学习 代码仓库&#xff1a;Gitee 目录 虚拟地址和物理地址 页表 进程地址空间 进程地址空间存在的意义 虚拟地址和物理地址 我们在学习C/C的时候肯定都见过下面这张有关于内存分布的图片&a…

人体关键点检测1:人体姿势估计数据集

人体关键点检测1&#xff1a;人体姿势估计数据集 目录 人体关键点检测1&#xff1a;人体姿势估计数据集 1.人体姿态估计 2.人体姿势估计数据集 &#xff08;1&#xff09;COCO数据集 &#xff08;2&#xff09;MPII数据集 &#xff08;3&#xff09;Human3.6M &#xf…

微软发布Orca2,“调教式”教会小规模大语言模型如何推理!

我们都知道在大多数情况下&#xff0c;语言模型的体量和其推理能力之间存在着正相关的关系&#xff1a;模型越大&#xff0c;其处理复杂任务的能力往往越强。 然而&#xff0c;这并不意味着小型模型就永远无法展现出色的推理性能。最近&#xff0c;奶茶发现了微软的Orca2公开了…

vertica主键列能插入重复值的处理办法

问题描述 开发同事反馈在vertica中创建含主键列的表中插入重复数据时没有进行校验&#xff0c;插入重复值成功。经过测试着实可以插入重复值&#xff0c;这个坑有些不一样。 创建表和插入语句如下&#xff1a; --创建表 CREATE TABLE dhhtest(ID VARCHAR(64) PRIMARY KEY );…

MeteoInfo-Java解析与绘图教程

MeteoInfo-Java解析与绘图教程(四) 上文我们说到,将地图叠加在色斑图上,但大部分都是卫星绘图,现在开始讲解micaps数据绘图,同样也是更多自定义 配置 首先我们解析micaps数据,将之前学到的东西拿过来绘图 MeteoDataInfo meteoDataInfo new MeteoDataInfo(); meteoDataInfo.o…

hadoop-3.3.5安装过程

准备资源三台虚拟机&#xff1a; 1&#xff09;准备3台服务器&#xff08;关闭防火墙、静态IP、主机名称&#xff09; 2&#xff09;安装JDK 3&#xff09;配置环境变量 4&#xff09;安装Hadoop 5&#xff09;配置环境变量 安装虚拟机&#xff08;略&#xff09;--1台即…

【推荐系统】推荐算法数学基础

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍推荐系统涉及的数学知识、推荐系统涉及的概率统计知识。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下吧】 上一篇文章&#xff1a;《【推…

为什么每个 Java 开发者都需要了解 Scala

前面我们一起回顾了第九期 Scala & Java Meetup 中最受关注的话题 —— jdk 并发编程的终极解决方案&#xff1a;虚拟线程&#xff0c;探讨了这一新特性对包括 Scala 在内的响应式编程语言的影响。 本次 Meetup 的首位分享者 Chunsen&#xff0c;在加入 Tubi 成为 Scala 开…

SpringAMQP 快速入门

SpringAMQP 快速入门 1. 创建项目2. 快速入门2.2.1 消息发送2.2.2 消息接收 3. 交换机3.1 Fanout Exchange&#xff08;扇出交换机&#xff09;3.1.1 创建队列与交换机3.1.2 消息接收3.1.3 消息发送 3.2 Direct Exchange&#xff08;直连交换机&#xff09;3.2.1 创建交换机与队…

Java 简易版 TCP(一对一)聊天

客户端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;p…

智能优化算法应用:基于跳蛛算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于跳蛛算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于跳蛛算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.跳蛛算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

springboot + thymeleaf + layui 初尝试

一、背景 公司运营的同事有个任务&#xff0c;提供一个数据文件给我&#xff0c;然后从数据库中找出对应的加密串再导出来给他。这个活不算是很难&#xff0c;但时不时就会有需求。 同事给我的文件有时是给excel表格&#xff0c;每一行有4列&#xff0c;逗号隔开&#xff0c;…