大数的阶乘输入不超过1000的正整数n,输出n!=1×2×3×…×n的精确结果.样例输入:30样例输出:265252859812191058636308480000000【分析】为了保存结果,先分析1000!大约等于4×102567,因此可以用一个3000个
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 03:16:52
大数的阶乘输入不超过1000的正整数n,输出n!=1×2×3×…×n的精确结果.样例输入:30样例输出:265252859812191058636308480000000【分析】为了保存结果,先分析1000!大约等于4×102567,因此可以用一个3000个
大数的阶乘
输入不超过1000的正整数n,输出n!=1×2×3×…×n的精确结果.
样例输入:30
样例输出:265252859812191058636308480000000
【分析】
为了保存结果,先分析1000!大约等于4×102567,因此可以用一个3000个元素的数组f保存.让f[0]保存结果的个位,f[1]是十位,f[2]是百位,…,则每次只需要模似手算即可完成n!.在输出时需要忽略前导0.注意,如果结果本身就是0,那么忽略所有前导0后将什么都不输出.所幸n!肯定不等于0,因本题可以忽略这个细节.
完整的程序如下:
#include
#include
const int maxn = 3000;
int f[maxn];
int main() {
int i,j,n;
scanf("%d",&n);
memset(f,0,sizeof(f));
f[0] = 1;
for(i = 2; i = 0; j--) if(f[j]) break; /* 忽略前导0 */
for(i = j; i >= 0; i--) printf("%d",f[i]);
printf("\n");
return 0;
for(i = 2; i
大数的阶乘输入不超过1000的正整数n,输出n!=1×2×3×…×n的精确结果.样例输入:30样例输出:265252859812191058636308480000000【分析】为了保存结果,先分析1000!大约等于4×102567,因此可以用一个3000个
这段代码:
for(i = 2; i