高精度算法(2)

前言

延续上次所讲的内容再对乘法和除法进行说明,希望有所帮助

注意这里的乘除法都是针对于整数如果要是涉及到小数,我们得使用二分法

通过二分同样可以解决小数精度问题

高精度乘法

思路

我们只能用字符串来读取一个很大很大的数,所以说仍然是需要将字符转化为数字的

最后输出的是这个数的每一位

乘法的计算当然还是要依据与乘法法则

一位一位的相乘,注意不要先去遇10进1把它当成整体,把他们加在一起后再遇10进1

OK可以画个图来促进理解

看代码吧

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
//高精度乘法
char s1[2005],s2[2005];
int a[2005], b[2005],c[2005];
int main()
{int la, lb, lc;printf("清输入两个数\n");scanf("%s", s1);scanf("%s", s2);la = strlen(s1);lb = strlen(s2);lc = la + lb;//逆置方便计算for (int i = 0; i < la; i++){a[la - i] = s1[i]-'0';}for (int i = 0; i < lb; i++){b[lb - i] = s2[i]-'0';}//开始相乘相加for (int i = 1; i <=la; i++){for (int j = 1; j <=lb; j++){c[i + j - 1] += a[i] * b[j];c[i + j] += c[i + j - 1] / 10;c[i + j - 1] %= 10;}}//清除前置0while (c[lc] == 0 && lc > 1)lc--;for (int i = lc; i > 0; i--){printf("%d", c[i]);}return 0                                ;
}

再测试一下 

注意这里还是不能用while循环连续测试,是因为代码中存在全局变量在使用的过程中可能不会消除上一次的影响

高精度除法

 这个高精度除法仍然是针对于整数的,我们是使用逐位试商法

看看我画图

这里同时也要清除前置0,而且除数也不能为0

看代码吧

char s1[5005]; long long b,c[5005],x,a[5005],la,lc;
int main()
{printf("请输入被除数与除数");cin >> s1 >> b;la = strlen(s1);//对于除法是不需要逆置的for (int i = 1; i <= la; i++)a[i] = s1[i - 1] - '0';for (int i = 1; i <= la; i++){c[i] = (x * 10 + a[i]) / b;//x一开始等于0x = (x * 10 + a[i])%b;}//清除前置0lc = 1;while (c[lc] == 0 && lc < la)lc++;for (int i = lc; i <= la; i++)printf("%d", c[i]);return 0;
}

总结

对于最后,想要说的是,对于高精度的算法,我们重点是了解一下四则运算的基本算法

其实这本身的思路更加重要

好了,希望有所收获

                                                                                                                                               

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

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

相关文章

阿赵UE学习笔记——28、粒子系统Niagara简介

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的使用。这次开始学习粒子系统的使用。 一、Cascade系统 在介绍UE5的Niagara系统之前&#xff0c;必须先介绍一下旧版本的粒子系统。   在UE4的时候&#xff0c;虚幻引擎的粒子系统叫做Cascade&#x…

【论文阅读】Attention is all you need

摘要 主要的序列转换模型是基于复杂的循环或卷积神经网络&#xff0c;其中包括一个编码器和一个解码器。性能最好的模型还通过一种注意力机制将编码器和解码器连接起来。我们提出了一种新的简单的网络架构&#xff0c;Transformer&#xff0c;完全基于注意机制&#xff0c;完全…

杜牧是唐朝最风流的诗人

杜牧&#xff0c;有“杜紫薇”之称&#xff0c;是宰相杜佑的孙子。李白、杜甫是“大李杜”。杜牧、李商隐是“小李杜”。 杜牧23岁写了《阿房宫赋》&#xff0c;一朝成名天下知。 唐朝晚年&#xff0c;科举和仕途没有出路&#xff0c;杜牧寄情享乐。杜牧怀才不遇&#xff0c;…

C语言--函数递归

目录 1、什么是递归&#xff1f; 1.1 递归的思想 1.2 递归的限制条件 2. 递归举例 2.1 举例1&#xff1a;求n的阶乘 2.2 举例2&#xff1a;顺序打印⼀个整数的每⼀位 3. 递归与迭代 扩展学习&#xff1a; 早上好&#xff0c;下午好&#xff0c;晚上好 1、什么是递归&…

Ubuntu 22.04.4安装Docker引擎

正文共&#xff1a;1024 字 13 图&#xff0c;预估阅读时间&#xff1a;1 分钟 我们前面安装了几次Ubuntu的操作系统&#xff08;Ubuntu 23.10通过APT安装Open vSwitch&#xff09;&#xff0c;在开始之前&#xff0c;我还是简单提醒一下&#xff0c;从Ubuntu下载页面&#xff…

因式分解技巧1-----一次提净

什么是因式分解&#xff1f; 在小学&#xff0c;我们都学过质因数分解。就比如&#xff1a;&#xff0c;然而我们可以发现&#xff01;4此时还没有被分解完&#xff0c;于是&#xff1a; 则&#xff1a; 这是小学的质因数分解。那么我们一起看看初中的因式分解。 例1&…

SpringBoot3 函数式web 小记

前言&#xff1a;函数式web是spring5.2之后的一个新特性&#xff0c;Spring Boot 3 进一步优化了这一模型&#xff0c;为开发现代 Web 应用提供了更加灵活、简洁的方法&#xff1b; 函数式web的四大核心对象 - RouterFunction&#xff1a;定义路由信息 - RequestPredicates&am…

深度解析 Spring 源码:三级缓存机制探究

文章目录 一、 三级缓存的概述二、 三级缓存的实现原理2.1 创建Bean流程图2.2 getBean()2.3 doGetBean()2.4 createBean()2.5 doCreateBean()2.4 getSingleton() 三、 三级缓存的使用场景与注意事项3.1 在实际开发中如何使用三级缓存3.2 三级缓存可能出现的问题及解决方法 一、…

检索算法和技术的本质回顾

目录 一、数据结构和存储特点对检索效率的重大影响总结 二、数组和链表的线性结构检索 &#xff08;一&#xff09;基本分析 &#xff08;二&#xff09;使用二分查找提升数组检索效率 &#xff08;三&#xff09;灵活改造链表提升检索效率 问题背景 解决方案 歌曲块链…

循序渐进丨使用 Python 向 MogDB 数据库批量操作数据的方法

当我们有时候需要向数据库里批量插入数据&#xff0c;或者批量导出数据时&#xff0c;除了使用传统的gsql copy命令&#xff0c;也可以通过Python的驱动psycopg2进行批量操作。本文介绍了使用psycopg2里的executemany、copy_from、copy_to、copy_expert等方式来批量操作 MogDB …

[C++][算法基础]求a的b次方模p的值(快速幂)

给定 n 组 &#xff0c;对于每组数据&#xff0c;求出 的值。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含三个整数 。 输出格式 对于每组数据&#xff0c;输出一个结果&#xff0c;表示 的值。 每个结果占一行。 数据范围 1≤n≤100000, 1≤≤2 …

移动Web学习09-响应式布局bootstrap案例开发

3、综合案例-AlloyTeam移动全端 准备工作 HTML 结构 <title>腾讯全端</title> <link rel"shortcut icon" href"favicon.ico" type"image/x-icon"> <!-- 层叠性&#xff1a;咱们的css 要 层叠 框架的 --> <link rel&…

匿名函数与gorm中的Transaction事务方法

整理下go中的匿名函数&#xff0c;项目中很多地方都在用。 1、函数类型的变量 Go中&#xff0c;函数也是一种数据类型。定义一个函数&#xff0c;把这个函数赋值给一个变量&#xff0c;这个变量就是函数类型的变量&#xff0c;用这个变量等价于直接调函数&#xff1a; packa…

数字阅览室解决方案

一、方案概述 “数字阅览室”概念一经提出&#xff0c;就得到了广泛的关注&#xff0c;纷纷组织力量进行探讨、研究和开发&#xff0c;进行各种模型的试验。随着数字地球概念、技术、应用领域的发展&#xff0c;数字阅览室已成为数字地球家庭的成员&#xff0c;为信息高速公路…

高频前端面试题汇总之JavaScript篇(上)

一、数据类型 1. JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f; JavaScript共有八种数据类型&#xff0c;分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是ES6 中新增的数据类型&#xff1a; Symbol 代…

如何免费申请长期HTTPS证书?

长期HTTPS证书申请步骤&#xff1a; 第一步&#xff1a;确定证书类型 根据你的网站需求&#xff0c;选一种适合的HTTPS证书。一般有这几种&#xff1a; - 域名型&#xff08;DV&#xff09;证书&#xff1a;最基础&#xff0c;验证你对域名的所有权&#xff0c;适合个人网站或…

构建有序链表,有序链表的归并,反转链表

本次将对于构建有序链表&#xff0c;有序链表的归并&#xff0c;反转链表&#xff0c;进行一一介绍和代码分享。 首先是一些链表中的基本的函数&#xff1a; Node* creatList() {Node* headNode (Node*)malloc(sizeof(Node));assert(headNode);headNode->next NULL;retu…

海信电视:中国游戏的影像“黑神话”

【潮汐商业评论/文】 《西游记》最后一难中&#xff0c;通天河老鼋回唐三藏“何时才能修成正果”&#xff0c;《黑神话&#xff1a;悟空》也曾面临这个拷问&#xff0c;如今海信电视与它正在共同回答这个命题。 自2020年发布预告片震动行业后&#xff0c;这部游戏就承载着太多…

Shader 渐变屏幕

渐变 前置工作&#xff0c;创建缓冲&#xff0c;对顶点着色器传递顶点数据 function main() {var canvas document.getElementById(webgl);var gl getWebGLContext(canvas);if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) returnvar n initVertexBuffers(gl); }fu…