求n的阶乘

Posted 卷王之王1.0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求n的阶乘相关的知识,希望对你有一定的参考价值。

n<=1000,n太大,采用数组存每位的方法

小学学的乘法法大概是:相同数位对齐,然后选择其中一个数的各位数字乘以另一个数,并 把相乘的结果累加.

  1. 定义一个大数组A[]来存大数,数组的一个元素存大数的一位。例如A[0]存个位,A[1]存十位,A[2]存百位,等等。
  2. 那么A[]需要定义成多大?也就是说,1000!有多少位?可以自己估计,不过,可以用 windows 自带的计算器能直接算出来,1000! ≈ 4×10^2567≈4×102567。代码中定义一个更大的A[10000]。
  3. 模拟乘法计算,处理进位:例如356×8。先计算个位的6×8,得48,其中个位的8等于 48%10=8,进位的44等于48/10=4。
  4. 最后打印是,从最高位开始打印。先找到最高位,即第一个不等于0的数,然后从高位往最低位打印。
#include<iostream>
using namespace std;
int A[10000]=0;
int main()

	int n;
	cin>>n;
	int temp;
	A[0]=1;
	for(int i=1;i<=n;i++)
		int jinwei=0;         		//进位注意写在此处每次都为0 
		for(int j=0;j<10000;j++)
			A[j]=A[j]*i+jinwei;
			jinwei=A[j]/10;
			A[j]=A[j]%10;
		
	
	

	int last;
    for(int i = 10000 - 1;i >= 0;i--)   //注意要反着遍历判断 
        if (A[i] != 0)
            last = i;
            break;
        
    
    for(int i = last; i >= 0;i--)
        cout << A[i];

	
 

以上是关于求n的阶乘的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何求一个数的阶乘

大数问题:求n的阶乘

leetcode题:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。

求n的阶乘

C语音,求整数1-100的累加值,但要求跳过所有个位为3的数,用FOR循环语句实现

大数阶乘