题目描述
给定一个整数N(0≤N≤10000),求取N的阶乘
输入描述:
多个测试数据,每个测试数据输入一个数N
输出描述:
每组用一行输出N的阶乘
大数运算,代码如下:
#include<stdio.h>
int main()
{
int a[100000],b,n,m,i,j,count,next,mut;
while(~scanf("%d",&n))
{
mut=1,count=1,j=0,next=0,a[0]=1;
for(i=2; i<=n; i++)
{
for(j=1; j<=count; j++)
{
mut=a[j-1]*i+next;
a[j-1]=mut%10;
next=mut/10;
}
while(next)
{
count++;
a[count-1]=next%10;
next/=10;
}
}
for(i=count-1; i>=0; i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}
原理我就不写了,简述一下就是用数组来模拟超出界限的大数。原理了解一下就可以,代码网上都是开放的,随用随搜。
本文介绍了一种处理大数阶乘的算法实现方法,通过使用数组模拟超出常规整数界限的大数运算,解决了直接计算可能导致的数据溢出问题。
985

被折叠的 条评论
为什么被折叠?



