1000的阶乘 2568位

#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
void fun(const char *a,const char *b ,char *c)
{int index;if (a[0]>'0'&&b[0]>'0')//两个正数相加
    {index=0;}if (a[0]=='-'&&b[0]=='-')//两个负数相加
    {index=2;}if (a[0]>'0'&&b[0]=='-')//a+,b-
    {index=1;}if (a[0]=='-'&&b[0]>'0'){index=3;}switch(index){case 0:{int remainder=0;int length=strlen(a)>strlen(b)?strlen(a):strlen(b);for (int i=strlen(a)-1,j=strlen(b)-1;i>=0||j>=0;i--,j--){int x1,x2;if (i>=0) x1=a[i]-'0';elsex1=0;if (j>=0) x2=b[j]-'0';elsex2=0;div_t temp=div(x1+x2+remainder,10);remainder=temp.quot;c[length--]=temp.rem+'0';}if(remainder!=0)c[0]=remainder+'0';else{for (int i=0;i<strlen(c);i++){c[i]=c[i+1];}}}break;case 1:{if (strlen(a)>strlen(b)-1||strlen(a)==strlen(b)-1&&strcmp(a,b+1)>=0)//a-b为+
            {int remainder=0;for (int i=strlen(a)-1,j=strlen(b)-1;i>=0||j>0;i--,j--){int x1,x2;if (i>=0){x1=a[i]-'0';} else{x1=0;}if (j>0){x2=b[j]-'0';} else{x2=0;}int value=x1-x2+remainder;if (value>=0){c[i]=value+'0';remainder=0;} else{ c[i]=value+10+'0';remainder=-1;}}} else{int remainder=0;for (int i=strlen(a)-1,j=strlen(b)-1;i>=0||j>0;i--,j--){int x1,x2;if (i>=0){x1=a[i]-'0';} else{x1=0;}if (j>0){x2=b[j]-'0';} else{x2=0;}int value=x2-x1+remainder;if (value>=0){c[j]=value+'0';remainder=0;} else{ c[j]=value+10+'0';remainder=-1;}}c[0]='-';}}break;case 2:{int length=strlen(a)>strlen(b)?strlen(a):strlen(b);int remainder=0;for (int i=strlen(a)-1,j=strlen(b)-1;i>0||j>0;i--,j--){int x1,x2;if (i>0) x1=a[i]-'0';elsex1=0;if (j>0) x2=b[j]-'0';elsex2=0;div_t temp=div(x1+x2+remainder,10);remainder=temp.quot;if (i>=j){c[i+1]=temp.rem+'0';} else{c[j+1]=temp.rem+'0';}}if(remainder!=0){c[1]=remainder+'0';c[0]='-';}else{c[0]='-';for (int i=1;i<=length+3;i++){c[i]=c[i+1];}}}break;case 3:{if (strlen(b)>strlen(a)-1||strlen(b)==strlen(a)-1&&strcmp(b,a+1)>=0)//b-a为+
            {int remainder=0;for (int i=strlen(b)-1,j=strlen(a)-1;i>=0||j>0;i--,j--){int x1,x2;if (i>=0){x1=b[i]-'0';} else{x1=0;}if (j>0){x2=a[j]-'0';} else{x2=0;}int value=x1-x2+remainder;if (value>=0){c[i]=value+'0';remainder=0;} else{ c[i]=value+10+'0';remainder=-1;}}} else{int remainder=0;for (int i=strlen(a)-1,j=strlen(b)-1;i>0||j>=0;i--,j--){int x1,x2;if (i>0){x1=a[i]-'0';} else{x1=0;}if (j>=0){x2=b[j]-'0';} else{x2=0;}int value=x1-x2+remainder;if (value>=0){c[i]=value+'0';remainder=0;} else{ c[i]=value+10+'0';remainder=-1;}}c[0]='-';}}break;}
}
void main()
{char sum[10000]={'\0'};char temp1[10000]={'\0'};char temp2[10000]={'\0'};sum[0]='1';for (int i=2;i<=20;i++){memset(temp2,0,10000);strcpy(temp2,sum);for (int j=1;j<=i-1;j++){memset(temp1,0,10000);strcpy(temp1,sum);fun(temp1,temp2,sum);}cout<<sum<<endl;}//cout<<sum<<endl;

}

转载于:https://www.cnblogs.com/GoAhead/archive/2012/09/09/2677522.html

高精度加减法 1000阶乘求法相关推荐

  1. 高精度加减法的应用——试解大数之和

    一.前言 我是夏日弥,很高兴看到您来读我的博客, 这一次小夏将为您讲解一道经典的算法竞赛入门题,使用的方法涉及高精度加法和减法,vector动态数组,这是一种比较容易想得到,却不好代码实现的方法. 于 ...

  2. c语言高精度加减法程序,C语言实现高精度加减法

    本文实例为大家分享了C语言实现高精度加减法的具体代码,供大家参考,具体内容如下 首先,我们来看一下C语言中各类型的最值: unsigned int 0-4294967295 int -21474836 ...

  3. 程序求1!+2!+3!+...+1000!的和, 求1到1000阶乘之和

    求1到1000阶乘之和 今天在脉脉的匿名区看到一个这个面试题,有个面试官说面试者连这道题都不会写,我想了几分钟就能解出来,把代码写下来.写得有点繁琐了~~~,有高手可以指导更简单的方法了么... 求一 ...

  4. C语言求1000后面有多少个0,1到1000的阶乘 求1000阶乘的结果末尾有多少个0

    急求.用java算1到1000阶乘的末尾有几个零? 急求.用java算1到1000阶乘的末尾有几个零?急求具体的java程序怎么写? 1000的阶乘后面有多少个零? 从1乘到1000得出的结果后面有多 ...

  5. 1000的阶层 java,1000!阶乘怎么算

    1000! 阶乘怎么算? 在JAVA中,有BigInteger这个类,可以为你解决 . 但是如果是在C++,或者不用这个BigInteger又怎么解决呢? 由于没有C++编译器,所以只能用JAVA来代 ...

  6. C++ 高精度加减法 (vector实现)

    前言 在C++中,数据范围超过long long 的范围时,就要考虑到高精度,下面为运用容器实现的高精度加减法.(刚学,可能存在瑕疵) 基本步骤 对于输入的数据可以用string接收.然后遍历要运算的 ...

  7. Java 1000阶乘计算

    1000的阶乘使用BigInteger import java.math.BigInteger; import java.util.Scanner;public class Main {public ...

  8. java 求1000的阶乘_求1000阶乘的结果末尾有多少个0

    素数是个科学计算中很重要的一个概念,素数也叫质数.素数就是最纯净的数,没有任何其它成分的数,其它的数都可以说是由素数相乘出来的. 所以,理解好素数,对于数学和程序来说,有重要的意义. 题目是:求100 ...

  9. python 摸索(二) 让我爱上python的一句1000阶乘代码

    reduce (lambda x,y:x*y ,xrange(1,1001)) 实现1000的阶乘,简约! reduce(function, iterable[,initializer]) reduc ...

最新文章

  1. nagios监控远程端口
  2. (转)个例子让你了解Java反射机制
  3. 打印下标iOS 6-字面量
  4. 基于java的社交网站毕业设计_软件工程毕业设计_社交网站.pdf
  5. SAP Spartacus 重用组件cx-table的设计原理
  6. oracle opaque_transform,oracle databse link
  7. 使用Directory.EnumerateFiles进行批处理
  8. python装饰器函数执行后日志_python 某一函数上面有多个装饰器
  9. 2010多校第一题 hdu3440House Man 差分约束系统
  10. 2020 华为 一面 二面 面经
  11. 软考高项(信息系统项目管理师)计算题公式汇总
  12. 思维模型:建立高品质思维的30种模型
  13. 海康大华RTSP转HLS直播
  14. 同学,主业和副业如何选?
  15. 如何让在国内访问github网站的速度变快
  16. STM32H743ZI+MPU+LWIP ping解决
  17. HDU -1704 Rank——floyd
  18. 面对DDoS攻击的威胁时应该怎么做呢?
  19. 将C:\Users下中文用户名修改为英文(Win10)
  20. 2021 Jiangsu Collegiate Programming Contest部分题解

热门文章

  1. 无法设置共享文件夹的解决方法收集
  2. after exercise
  3. 东方和西方的两个视角的摘抄
  4. ARMV7,ARMV8
  5. C#属性: 利用set实现递归
  6. github-share报错无法读取远程仓库
  7. Java并发编程的艺术(一)——并发编程需要注意的问题
  8. Android 仿微信 相册多图选择器
  9. 11.使用ForwardAction实现页面屏蔽。
  10. 一个word文档中,多个表格的批量调整(根据窗口调整表格和添加表格水平线)...