算法资源库(5)求阶乘问题

107 阅读1分钟

 一、 问题描述  

       请输入一个50至100之间的整数n,求解n!

 二、算法思想 

  1. 输入一个50至100之间的整数n。
  2. 声明一个变量result,并将其初始化为1,用于保存n的阶乘。
  3. 使用一个循环,从1到n,循环变量为i。
  4. 在循环中,将result与i相乘,将结果保存到result中。
  5. 循环结束后,result即为n的阶乘。
  6. 输出result作为n的阶乘的结果。

三、代码实现 

#include<stdio.h>
#define MAX 10000
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int a[MAX];
        a[1]=1;
        int p=1;
        int one=0;
        int i,j;
        for(i=2;i<=n;i++)
        {
            for(j=1;j<=p;j++)
            {
                int temp=a[j]*i+one;
                one=temp/10;
                a[j]=temp%10;
            }
            while(one)
            {
                a[j]=one%10;
                one=one/10;
                j++;
            }
            p=j-1;
        }
        for(i=p;i>=1;i--)
        printf("%d",a[i]);
    }
}

执行结果 

结语  

败不馁,胜不骄

成大事者之秘籍也

!!!