精度计算-大数阶乘-ACM常用算法

语法 

  int result=factorial(int n);

参数:

  n: n 的阶乘

返回值:

  阶乘结果的位数

注意:  

  本程序直接输出n!的结果,需要返回结果请保留long a[]

 inlclude <math.h>

源程序:  

int factorial(int n)
{
  long a[10000];
  int i,j,l,c,m=0,w;
  a[0]=1;
  for(i=1;i<=n;i++)
    {
      c=0;
      for(j=0;j<=m;j++)
        {
          a[j]=a[j]*i+c;
          c=a[j]/10000;
          a[j]=a[j]%10000;
      }
     if(c>0) {m++;a[m]=c;}
  }
  w=m*4+log10(a[m])+1;
  printf("\n%ld",a[m]);
  for(i=m-1;i>=0;i--) printf("%4.4ld",a[i]);
  return w;
} 

本文转自博客园xingoo的博客,原文链接:精度计算-大数阶乘-ACM常用算法,如需转载请自行联系原博主。

时间: 2024-10-14 22:39:12

精度计算-大数阶乘-ACM常用算法的相关文章

精度计算-大数乘小数

语法:mult(char c[],char t[],int m); 参数: c[]: 被乘数,用字符串表示,位数不限 t[]: 结果,用字符串表示 m: 乘数,限定10以内 返回值: null 注意:     需要 string.h 源程序:   #include <stdio.h> #include <stdlib.h> #include <string.h> void mult(char c[],char t[],int m) { int i,l,k,flag,ad

阶乘 算法-网上找的c语言的求大数阶乘的答案 看不太懂这个算法 求大神解释算法

问题描述 网上找的c语言的求大数阶乘的答案 看不太懂这个算法 求大神解释算法 #include int main() { ??? int n; ??? int a[9000]; //确保保存最终运算结果的数组足够大 ???? int digit = 1; //位数 ???? int temp;?? //阶乘的任一元素与临时结果的某位的乘积结果 ???? int i, j, carry; //carry:进位 ???? printf("please in put n:n"); ??? s

php计算两个整数的最大公约数常用算法小结

 这篇文章主要介绍了php计算两个整数的最大公约数常用算法,实例总结了求最大公约数的三种常用方法,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php计算两个整数的最大公约数常用算法.分享给大家供大家参考.具体如下:   代码如下: <?php //计时,返回秒 function microtime_float () { list( $usec , $sec ) = explode ( " " , microtime ()); return ((float)

php计算两个整数的最大公约数常用算法小结_php技巧

本文实例讲述了php计算两个整数的最大公约数常用算法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php //计时,返回秒 function  microtime_float () {     list( $usec ,  $sec ) =  explode ( " " ,  microtime ());     return ((float) $usec  + (float) $sec ); } /////////////////////////////////

精度计算-乘法(大数乘大数)

语法:mult(char a[],char b[],char s[]); 参数: a[]: 被乘数,用字符串表示,位数不限 b[]: 乘数,用字符串表示,位数不限 t[]: 结果,用字符串表示 返回值: null 注意:     空间复杂度为 o(n^2)   需要 string.h 源程序:     #include <iostream> #include <string.h> using namespace std; void mult(char a[],char b[],ch

算法系列(九) 计算几何与图形学有关的几种常用算法(二)

3.6 用矢量的叉积判断直线段是否有交 矢量叉积计算的另一个常用用途是直线段求交.求交算 法是计算机图形学的核心算法,也是体现速度和稳定性的重要标志,高效并且稳定的求交算法是任何 一个CAD软件都必需要重点关注的.求交包含两层概念,一个是判断是否相交,另一个是求出交点.直 线(段)的求交算法相对来说是比较简单的,首先来看看如何判断两直线段是否相交. 常规的 代数计算通常分三步,首先根据线段还原出两条线段所在直线的方程,然后联立方程组求出交点,最 后再判断交点是否在线段区间上.常规的代数方法非常繁

php 常用算法和时间复杂度

本篇文章是对php中的常用算法以及时间复杂度进行了详细的分析介绍,需要的朋友参考下   按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3) 复制代码 代码如下: //二分查找O(log2n) function erfen($a,$l,$h,$f){ if($l >$h){ return false;} $m = intval(($l+$h)/2); if ($a[$m] == $f){ r

轻松看懂机器学习十大常用算法

通过本篇文章可以对ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题. 每个算法都看了好几个视频,挑出讲的最清晰明了有趣的,便于科普. 以后有时间再对单个算法做深入地解析. 今天的算法如下: 决策树 随机森林算法 逻辑回归 SVM 朴素贝叶斯 K最近邻算法 K均值算法 Adaboost 算法 神经网络 马尔可夫 1. 决策树 根据一些 feature 进行分类,每个节点提一个问题,通过判断,将数据分为两类,再继续提

常用算法之分治法与动态规划法

          之所以把这两种算法放到一起,是因为它们都是用来求最优解的问题,与贪心算法是不同的.但是这两种算法又有一些区别,下面来做解释:           分治,即分而治之,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题--直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并.                           上图用一个例子来解释如下:              当n>1时,想求得T(n),必须知道T(n-1),以此类推,所