什么是高精度算法?

高精度算法就是对于非常庞大的数据的计算,结果往往超出了数据类型的范围所以采用数组方式进行计算

基本高精度算法

加法运算

//高精度加法:将b的内容加到a;
void add(int a[], int b[]) {for (int i = 1; i <= b[0]; i++){a[i] = a[i]+b[i];a[i + 1] += a[i]/10;a[i] %= 10;}if (a[a[0] + 1] > 0) a[0]++;return;
}

乘法运算

//高精度乘法
void mul(int a[], int b) {for (int i = 1; i <= a[0]; i++) a[i] *= b;for (int i = 1; i <= a[0]; i++) {a[i + 1] += a[i] / 10;a[i] %= 10;}while (a[a[0]+1] > 0) {a[0]++;a[a[0] + 1] = a[a[0]] / 10;a[a[0]] %= 10;}}

在这我就不多列举了,毕竟自己也是临时学的,也就不敢多言,只列举在这个题目里面需要引用的。更加详细的内容请看这位大佬的博客:
高精度算法(大整数的加减乘除运算)
接下来是其它代码:

int main() {int n;//阶乘最大的循环次数;int arr[200];//记录下n的高精度数组;int sum[200];//求和数组;memset(sum, 0, sizeof(sum));memset(arr, 0, sizeof(arr));cin >> n;arr[0] = 1;arr[1] = 1;sum[0] = 1;if (n == 0) cout << 0;else {if (n == 1)cout << 1;else {for (int i = 1; i <=n; i++) {mul(arr, i);//阶乘:数组a从1乘到n;add(sum, arr);//每次阶乘的结果都加起来}sum[0] = arr[0];for (int i = sum[0]; i > 0; i--) cout << sum[i];}}
}

这样,这个问题就解决了(虽然我花了4H(QAQ!!!))

洛谷OJ_P1009涉及的高精度算法相关推荐

  1. 洛谷or牛客数据结构+算法

    栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...

  2. 洛谷1594 护卫队 (st算法)

    评测链接:http://www.luogu.org/problem/show?pid=1594 题目描述 Description 护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥.因为街道是 ...

  3. 洛谷P1650:田忌赛马 ← 贪心算法

    [题目来源] https://www.luogu.com.cn/problem/P1650 [题目描述] 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马. ...

  4. 洛谷专题训练 ——【算法1-1】模拟与高精度

    洛谷题单[算法1-1]模拟与高精度 ACM-ICPC在线模板 题单链接: [算法1-1]模拟与高精度 下面的这一坨都是洛谷题单上的东东 题单简介 恭喜大家完成了第一部分语言入门,相信大家已经可以使用 ...

  5. 洛谷算法题单:模拟与高精度例题(上)

    一:模拟 想要利用计算机解决现实生活中的一些复杂的问题时,建立模型是解决问题的关键. 举个生活中常见的例子:我们拿到了某次数学考试的成绩单,现在需要知道谁考得最好.当然不能把成绩单对着电脑晃一晃,然后 ...

  6. (快速幂算法+高精度)洛谷P1045 麦森数

    前言   故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...

  7. 洛谷算法题单:模拟与高精度例题(下)

    接着上篇的例题. 1.洛谷P4924魔法少女小Scarlet 题目描述: Scarlet最近学会了一个数组魔法,她会在n∗n二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转90°, 首先,Scarl ...

  8. 深入理解 操作系统 LRU算法(以洛谷P1540题为例)

    LRU算法 LeastRecentlyUsedLeast Recently UsedLeastRecentlyUsed 算法,意为"最近最少使用",这是操作系统内存管理部分重要的一 ...

  9. 深入理解 操作系统 SJF算法(以洛谷P1223题为例)

    CPU Scheduling Algorithms 重要的CPU调度算法如下: FCFS Scheduling(First-Come, First-Served) SJF Scheduling(Sho ...

  10. 高精度——A+B Problem(洛谷 P1601)

    高精度算法指的是可以计算很大整数的高精度运算的方法 此题选自洛谷P1601 用数组来模拟非常长的整数,这意味着可以用数组的每一位记录那个数字上的每一位. 也就是说,可以用n位数组来记录一个n位数字. ...

最新文章

  1. 《Haskell并行与并发编程》——第2章,第2.1节惰性求值和弱首范式
  2. Appium的环境搭建和配置
  3. HDOJ-2012 素数判定
  4. 数字滤波器的幅频响应
  5. 【Kaggle-MNIST之路】CNN结构再改进+交叉熵损失函数(六)
  6. Hibernate插入、查询、删除操作 HQL or SQL
  7. java后台面试题整理
  8. c++学习笔记(7) 面向对象思想
  9. Android 5.0+(RecycleView、CardView、Palette)
  10. Visual C++ Samples-------------Code Project
  11. Aspose.Slides for Java 3.0 发布
  12. python接口自动化参数化_python接口自动化-参数化
  13. Reg Organizer v8.75 注册表及系统清理优化工具
  14. C++中的矩阵特征值
  15. android x86 cm14,cm14.1下载|cm14.1(cyanogenmod) 官方版 - 软件下载 - 绿茶软件园|33LC.com...
  16. Facebook中国程序员之死:年仅38岁就跳楼轻生
  17. 媒体文件查看/上传至WP媒体库
  18. 从硬件到语言,详解C++的内存对齐
  19. 生成1至10位随机数
  20. oracle dbms advisor,通过shell定制dbms_advisor.quick_tune

热门文章

  1. SQL基本语句1——创建、添加、删除
  2. 点亮led灯的个数_点亮一个led灯程序
  3. python 线程池 锁_python 线程池和锁
  4. 模型预测控制的缺点_基于模型预测控制的车辆纵向跟车模型分析
  5. win11安装linux双系统
  6. 中鸣机器人编程教程 c 语言,中鸣教育机器人简介.doc
  7. JAVA开发Android聊天APP(有源码)
  8. 流水作业c语言代码,C语言流水灯
  9. 分享思路:Python+Spark爬虫音乐推荐系统 音乐数据分析可视化 音乐推荐app 音乐网站 大数据毕业设计(app+web+爬虫+spark+可视化)
  10. 从再见到遇见 美柚专注打造女性品牌