当前位置: 代码迷 >> 综合 >> 清华大学---N的阶乘(大数运算)
  详细解决方案

清华大学---N的阶乘(大数运算)

热度:62   发布时间:2024-01-06 13:08:57.0

题目描述
输入一个正整数N,输出N的阶乘。
输入描述:
正整数N(0<=N<=1000)
输出描述:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
示例1
输入

4
5
15
输出

24
120
1307674368000


分析:大数运算是一个老生畅谈,常谈常新的话题。
关于大数阶乘,自以为以下这篇博文讲得不错
https://blog.csdn.net/lisp1995/article/details/52403507

以下是我这题通过的代码:

#include <stdio.h>
int main(){int a[20001];//储存每一位所得到的数int temp,digit,n,i,j=0;while(scanf("%d",&n)!=EOF){a[0]=1;//从1开始乘digit=1;//位数从第一位开始for(i=2;i<=n;i++){int num=0;for(j=0;j<digit;j++){   //从低位到高位temp=a[j]*i+num;//将一个数的每一位利用数组进行存储a[j]=temp%10;//将一个数的每一位利用数组进行存储num=temp/10;}while(num){ //判断退出循环后,num的值是否为0a[digit]=num%10;//继续存储num=num/10;digit++;}}for(i=digit-1;i>=0;i--)printf("%d",a[i]);printf("\n");}return 0;
}