以前刷oj的时候 遇见一个题目 也就是输入一个数字 判断阶乘和

用高精度计算出S=1!+2!+3!+…+N!(N≤50),其中"!"表示阶乘,
例如:5!=5*4*3*2*1。输入正整数N,输出计算结果S。输入
每个测试文件只包含一组测试数据,每组输入一个正整数N。输出
对于每组输入数据,输出阶乘和的计算结果。样例输入 Copy
3
样例输出 Copy
9

其实看起来还简单?当然只是对于部分数据如此,比如好像十几以后的阶乘就已经error了,这里就要用到今天的主角,高精度算法。
关于高精度的基本加法我写过 链接在这里
https://editor.csdn.net/md/?articleId=113096418
因为加法是基础
所谓高精度的思想是什么呢?无非就是放入几个数字 挨个加,看是不是大于10,大的话前一位就+1,当位减去10,依次循环就好了;
乘法也是相同的道理:
例如 a=1234 * i=25

s = 4 * 25 + 0 = 100; a[0] = 100%10 = 0; c = 100/10 = 10;
此时a = 1230,c = 10

s = 3 * 25 + 10 = 85; a[0] = 85 %10 = 5; c = 85 /10 = 8;
此时a = 1250,c = 8

s = 2 * 25 + 8 = 58; a[0] = 58 %10 = 8; c = 58 /10 = 5;
此时a = 1850,c = 5

s = 1 * 25 + 5 = 30; a[0] = 30 %10 = 0; c = 85 /10 = 3;
此时a = 0850,c = 3

s = 0 * 25 + 3 = 3; a[0] = 3 %10 = 3; c = 3 /10 = 0;
此时a = 30850,c = 0
关于阶乘和可能处理要更多一些
但是基本原理懂,然后注意些细节就可以了
下面上代码

#include<stdio.h>
#define N 10000//预定义  如果不定义下面可以用strlen判断0位
int main()
{int i, j, x, k, n, b[N] = { 0 };scanf("%d", &n);
for (k = 1; k <= n; k++)//阶乘的乘数 {int a[N] = { 0 };a[9999] = 1;for (i = 1, x = 0; i <= k; i++)for (j = 9999; j >= 0; j--)  {a[j] = a[j] * i + x;  x = a[j] / 10;a[j] = a[j] % 10;}for (j = 9999; j >= 0; j--)  {b[j] = b[j] + a[j];//高精度加法 if (b[j] >= 10){b[j - 1]=b[j-1]+1;//比如b[3}=b[2]+a[2} b[2]=6  a[2]=6//b[3]+1;b[2]-10;参照减法算式来看 //如果大于10  前一位+1 b[j] = b[j]-10;//后一位-10 }}}for (i = 0; i < N; i++)  if (b[i] != 0) break;//判别逆序输出 //应该也可以通过strlen判断位数长度 //或许while!=(('\0')) for (x = i; x < N; x++)printf("%d", b[x]); return 0;
}

大抵就是如此,有不懂的可以私信评论询问,来者不拒。
码字不易,多多点赞关注+收藏!
爱你们。

高精度阶乘和 高精度算法(c语言)相关推荐

  1. c语言高精度算法阶乘_任意位数的高精度阶乘算法 C语言版

    文章作者:姜南(Slyar)文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. 今天就研究这个"任意位数的高精度阶乘算法"了,通过和大三的一个学 ...

  2. (C语言)高精度阶乘

    题目描述 启明星软件组组长听说我们会乘法之后,立马让我们帮他算一下阶乘(怎么有这么坏的组长). 此题也很简单只需要算一下不大于100的数n的阶乘就好了,看我多好数据一下子少了10倍哦! 输入 输入有多 ...

  3. 高精度阶乘C语言实现

    #include <stdio.h> #include <stdlib.h> #include <math.h> //高精度阶乘,计算n!//时间复杂度为O(n^2 ...

  4. TM7711高精度厨房秤滤波算法

    AD芯片采样TM7711,该芯片支持24位的AD转换,我们做0.1g的厨房秤,所以至少使用21~22位才行,21位时0.1g对应7.5个内码左右,22位时0.1g对应15个内码左右.这里我们使用22位 ...

  5. P1134 高精度阶乘

    P1134 高精度阶乘 滚动数组. #include <bits/stdc++.h> using namespace std; int main () {int n;while (cin& ...

  6. C++求阶乘四种方法,阶乘和,高精度阶乘

    目录 前言 一.阶乘和是什么? 二.题目 三.对错代码对比 1.错误代码 2.正确代码 四,拓展(以下均多组输入) 1,简单阶乘(int递归) 2,阶乘改进1(long long递归) 3,阶乘改进2 ...

  7. c语言常用算法pdf,妙趣横生的算法(C语言实现 第2版) 带目录完整pdf[94MB]

    <妙趣横生的算法(C语言实现 第2版)>是深受广大读者好评的<妙趣横生的算法(C语言实现)>一书的全新升级版.本书在第1版的基础上对原书内容做了大量的调整和补充,并将书中的实例 ...

  8. c语言贝叶斯分类,基于朴素贝叶斯分类器的文本分类算法(C语言)

    基于朴素贝叶斯分类器的文本分类算法(C语言) 基于朴素贝叶斯分类器的文本分类算法(C语言).txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情.#include ...

  9. 《数据结构与算法 C语言版》—— 3.8习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第3章,第3.8节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.8习题 1名 ...

最新文章

  1. 皮一皮:听说这门专业挺难学...
  2. mysql数据库的备份与还原
  3. docker安装运行迅雷thunder
  4. 8086控制转移指令学习笔记
  5. 竞赛图 计算机网络 应用题,我校学子获2020年“中国高校计算机大赛-网络技术挑战赛”全国总决赛一等奖(图)...
  6. 百练 求排列的逆序数
  7. android 库编译报错,Android Studio编译项目报错
  8. ASP与數据庫,文本文件鏈接精髓
  9. Fast marching on 3D meshes with diffusion distance
  10. IO中的阻塞、非阻塞、同步、异步概念分析详解(通俗易懂)
  11. 激光雷达的KPI与技术方案
  12. [Micropython]TPYBoard开发板点亮心形8*8点阵
  13. 一步一步学Silverlight 2系列(15):数据与通信之ASMX
  14. EEGLAB合辑 | 第一节 往EEGLAB导入数据
  15. 深度学习视频数据集(动作识别):UCF-101
  16. 神经网络与深度学习(六)卷积神经网络(4)ResNet18实现MNIST
  17. 年终盘点娱乐圈之最:张柏芝最失意倪妮最幸运
  18. 【好书推荐】芯片产业科普书籍:《芯事》
  19. 2022年黄石市高企申报奖励补贴以及认定奖励补贴汇总!
  20. 小议费雪线性判别(Fisher Linear Discriminant Analysis)

热门文章

  1. 网站推广的八种基本方法
  2. 编译原理 实验2 语法分析器的构造
  3. 芯片短缺并没有妨碍英特尔创下“有史以来业绩最好的一年”
  4. 学海无涯!史上最全的《Android面试题及解析》,赶紧收藏!
  5. PDF怎么编辑修改?如何编辑PDF的内容?
  6. ARC101E Ribbons on Tree 树形dp 容斥
  7. 【翻译】EAST: An Efficient and Accurate Scene Text Detector
  8. java调用oracle过程,JAVA调用ORACLE存储过程报错
  9. 树状结构及文件目录详解
  10. MFC 生成中英文版软件对应的工程属性设置