不久前看见一个问题,求n!
n!=1*2*3*4*······*n,对于结果来说可能会很大,以至于爆long long的范围,所以单纯的暴力从1乘到n显然是不行的了。博主从网上找到题解后对此豁然开朗:啊!原来可以用一个数组来表示一个大整数!
接下来我们来讲解如何实现这种方法。
首先,我们可以用一个数组A表示当前数值a(A[0]代表a的个位,A[1]代表a的十位,依次下去……),然后,把a乘以整数k转化为数组中的每一个元素都乘以k,同时注意处理相应的进位。
下面为对应的代码实现:
1 #include2 #include 3 #define MAX 3000 4 int main() 5 { 6 int n,A[MAX],s=0,c=0,i,j; 7 scanf("%d",&n); 8 memset(A,0,sizeof(A)); 9 A[0]=1;10 for(i=2;i<=n;i++)11 for(j=0;j =0;j--)18 {19 if(A[j])break;20 }21 for(j;j>=0;j--)22 printf("%d",A[j]);23 return 0;24 }
谢谢观看,如有问题欢迎提出并指正。