问题描述:

解题思路:

由于N最大为1000,int的范围最大为10的9次方,long long int的范围最大为10的18次方,使用斯特林公式计算可知,n为12时,结果的位数已经为9,故N取1000一定远远超过了long long Int的范围,故应该考虑用模拟乘法的方法计算。

解题代码:

void Print_Factorial ( const int N )
{if(N<0){puts("Invalid input");return;}int num[3001]={0}; // 确保可以存储 N! 位数int k,n;k=1; // 位数n=0; // 进位num[0]=1; // init result 1int tmp; // 阶乘的任一元素与临时结果的某位的乘积结果// 最基本的乘法运算思想,将临时结果的每位与阶乘元素相乘for(int i=2;i<=N;i++) // 开始阶乘,阶乘元素从 2 开始{for(int j=0;j<k;j++){tmp=num[j]*i+n; // 相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)num[j]=tmp%10; // 更新临时结果的该位上的信息n=tmp/10; // 看是否有进位}while(n) // 如果有进位{num[k++]=n%10; // 新加一位,添加信息。位数+1n/=10; // 看还能不能进位}}for(int i=k-1;i>=0;i--){printf("%d",num[i]);}puts("");
}

基础编程题目集 6-10 阶乘计算升级版 (20 分)相关推荐

  1. PTA 基础编程题目集 6-8 简单阶乘计算 C语言

    PTA 基础编程题目集 6-8 简单阶乘计算 C语言 本题要求实现一个计算非负整数阶乘的简单函数. 函数接口定义: int Factorial( const int N ); 其中N是用户传入的参数, ...

  2. 基础编程题目集 6-8 简单阶乘计算 (10 分)

    问题描述: 解题思路: 由于数据很小,所以直接递归即可 解题代码: int Factorial( const int N ){if(N < 0) return 0;if(N == 0 || N ...

  3. PTA基础编程题目集-6-8 简单阶乘计算

    int Factorial( const int N ){int fact=1;if(N<0)return 0;for(int i=1;i<=N;i++){fact*=i;}return ...

  4. 基础编程题目集 6-7 统计某类完全平方数 (20 分)

    问题描述: 解题思路: 判断是否是完全平方数只需要判断 (int)sqrt(N) == sqrt(N) 判断是否有两个相同的数字,利用while每次取余,将个位上的数字进行记录, 用长度为10的一维数 ...

  5. 阶乘计算升级版 (20分)_求1!+2!+3!+...+20!的和

    题目:求1!+2!+3!+...+20!的和 阶乘定义: n! = 1 * 2 * 3 * - * n 难度 简单 参考答案 核心是阶乘的计算. 20!的阶乘的位数的估算非常重要,导致在定义阶乘函数的 ...

  6. PTA基础编程题目集 7-20 打印九九口诀表 (15分)

    题目: 下面是一个完整的下三角九九口诀表: 本题要求对任意给定的一位正整数N,输出从11到NN的部分口诀表. 输入格式: 输入在一行中给出一个正整数N(1≤N≤9). 输出格式: 输出下三角N*N部分 ...

  7. 基础编程题目集 7-2 然后是几点 (15 分)

    问题描述: 解题思路: 如何将4位数字表示提取出小时和分钟的时间呢? 将起始时间 / 100 即可得到 小时数, 将起始时间 % 100 即可得到分钟数, 对于变化的时间处理就简单了,%60得到应该改 ...

  8. 基础编程题目集 7-1 厘米换算英尺英寸 (15 分)

    问题描述: 解题思路: 公式意思是给你几英尺和几英寸,他们合起来对应多少米比如5英尺6英寸,就是对应(5+6/12) 英寸,(因为1英寸等于12英尺,所以inch/12,即6/12)即对应(5+6/1 ...

  9. #035 大数阶乘 PTA题目6-10 阶乘计算升级版 (20 分)

    实际题目 本题要求实现一个打印非负整数阶乘的函数. 函数接口定义: void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过1000.如果N是非负 ...

最新文章

  1. pc端,自适应屏幕分辨率
  2. UIAlertController
  3. 记录一下CUDNN配置
  4. linux shell 统计行数的8种方法
  5. python资料百度网盘-python自动保存百度盘资源到百度盘中的实例代码
  6. python中的切片和join的妙用
  7. CSS:你真的会用 z-index 吗?
  8. 各个行业纷纷瞅准了这块大蛋糕
  9. CSDN-markdown 文字样式设置(字体, 大小, 颜色, 高亮底色)与数学表达式设置
  10. Scala 函数式编程
  11. 图片随意命名可能被广告拦截插件拦截
  12. Latex、XeLatex无法加粗
  13. 上交所、深交所、中登结算的接口文档及下载链接
  14. PS MAC 2022安装步骤
  15. 一场跨越时空的协奏:编钟、古琴与5G的“弦外之音”
  16. 游戏出海欧洲有哪些可以接入的支付渠道
  17. Android Studio更换背景图片
  18. cl.clcl.news/index.php,公布一些后门网址
  19. 痞子衡嵌入式:可通过USB Device Path来唯一指定i.MXRT设备进行ROM/Flashloader通信
  20. 新版本已经不需要了icudtl.dat文件

热门文章

  1. bundle文件解压_通过sourcemap解压缩webpack 实战
  2. apache服务 功能错误_如何使用Apache OpenWhisk开发功能即服务
  3. 传感器 esp8266_如何使用ESP8266微控制器构建烟雾传感器
  4. opensource项目_最佳Opensource.com:编程
  5. drupal建站系统_容器将如何塑造Drupal生态系统
  6. 类和模块 类和原型 工厂方法 构造函数 constructor
  7. es6 Promise 的应用
  8. 视觉SLAM笔记(41) 光流
  9. extras mibs php7,ubuntu编译安装php7遇到的问题及解决方案
  10. go语言php编译,Golang模板编译引擎FET