阶乘求解升级版
来源:互联网 发布:淘宝本地化生活服务 编辑:程序博客网 时间:2024/05/13 06:59
本题要求实现一个打印非负整数阶乘的函数。
函数接口定义:
void Print_Factorial ( const int N );
其中N
是用户传入的参数,其值不超过1000。如果N
是非负整数,则该函数必须在一行中打印出N
!的值,否则打印“Invalid input”。
裁判测试程序样例:
#include <stdio.h>void Print_Factorial ( const int N );int main(){ int N; scanf("%d", &N); Print_Factorial(N); return 0;}/* 你的代码将被嵌在这里 */
输入样例:
15
输出样例:
1307674368000
解题思路:由于N为1000以内的整数,若以常规方法会导致溢出。所以需要采取用数组来存取数值的每一位。即模拟乘法运算的过程
参考解答:#include <stdio.h>void Print_Factorial ( const int N );int main(){ int N; scanf("%d", &N); Print_Factorial(N); return 0;}/* 你的代码将被嵌在这里 */void Print_Factorial(const int N){ if(N<0) { printf("Invalid input\n"); } else { int num[3001]={0};//用来存放数据的每一位 int k=1;//将数据初始值为一位 int temp;//用来记录每次计算后数据的大小 int n=0; //作为进位 num[0]=1;//先将初始值赋值为1 for(int i=2;i<=N;i++) { for(int j=0;j<k;j++) { temp=num[j]*i+n;//相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位) num[j]=temp%10;//更新临时结果的位上信息 n=temp/10;//看是否有进位 } while(n!=0) { num[k]=n%10; //新加一位,添加信息。位数增1 k++; n/=10;//看还能不能进位 } } for(int i=k-1;i>=0;i--) { printf("%d",num[i]); } printf("\n"); }}
阅读全文
0 0
- 阶乘求解升级版
- 阶乘计算升级版
- 阶乘计算升级版
- 阶乘计算升级版
- PTA 阶乘升级版
- 阶乘计算升级版
- 阶乘计算升级版
- 阶乘计算升级版(12位以上的阶乘)
- 4-10 阶乘计算升级版
- 阶乘计算升级版(大整数)
- 4-10 阶乘计算升级版*
- 4-10 阶乘计算升级版
- [PTA] 4-10 阶乘计算升级版
- PTA 6-10 阶乘计算升级版
- 4-10 阶乘计算升级版
- 求解100的阶乘
- 求解n的阶乘问题
- 4-10 阶乘计算升级版 (20分)
- C++设计模式-Factory工厂模式
- JavaScript-定义类的方法
- Python数据分析与展示(2)——Numpy数据存取与函数
- 享元模式
- syslog是什么
- 阶乘求解升级版
- 正则表达式验证价格
- 安卓调用系统图库和相机
- NodeJS Mongodb 创建数据库、集合、数据库用户自动化脚本
- 生成CVS文件,分页查询写入文件
- 1500人小区运营/ISP运营商案例
- spring mvc 解决中文乱码
- 在使用回车按下事件时踩过的坑。
- agileone+xampp环境搭建