pta 6-10 阶乘计算升级版
2018-01-24 10:22
399 查看
问题描述
本题要求实现一个打印非负整数阶乘的函数。其中N是用户传入的参数,其值不超过1000。
如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”
分析
这个题不能用int存结果。15就已经溢出了。用数组存数。代码
#include <stdio.h> void Print_Factorial ( const int N ){ int i,j, sum[2570] = {1,0}; int k = 1, temp = 0; if(N<0) printf("Invalid input\n"); else{ for( i=2; i<=N; i++) { for( j=0; j<k; j++) { temp = i * sum[j] + temp; //当前值加上乘积 sum[j] = temp % 10; //每次只存个位数 temp = temp / 10; // 余数不管多少,先存起来。这里的余数就是进位 if(temp>0&&j==k-1) k++; // 如果有进位,并且数组已经到头了,就增加数组长度 } } for ( i=k-1; i>=0; i--) { printf("%d", sum[i]); } printf("\n"); } } int main() { int N; scanf("%d", &N); Print_Factorial(N); return 0; }
相关文章推荐
- [PTA] 4-10 阶乘计算升级版
- PTA 4-10 阶乘计算升级版 (20分)
- PAT基础题 4-10 阶乘计算升级版
- 4-10 阶乘计算升级版
- 6-10 阶乘计算升级版
- 4-10 阶乘计算升级版*
- (函数题)4-10 阶乘计算升级版
- 4-10 阶乘计算升级版 (20分)
- 4-10 阶乘计算升级版
- 4-10 阶乘计算升级版
- 4-10 阶乘计算升级版 (20分)(大数乘法)
- 4-10 阶乘计算升级版
- 计算阶乘升级版---pta测试基础题
- 4-10 阶乘计算升级版 (20分)
- 4-10 阶乘计算升级版 (20分)
- PAT基础编程题 4-10 阶乘计算升级版
- WV.30-大数阶乘算法10-用Stirling逼近近似计算阶乘的探讨与应用
- 计算0~10的阶乘 使用递归
- 编写函数计算n的阶乘(n<10),n为函数参数。在main函数中调用该函数计算1!+2!+……+n!
- 6-8 简单阶乘计算(10 分) 本题要求实现一个计算非负整数阶乘的简单函数。