题目描述
对于自然数N的阶乘,当N比较小时,可以32位整数int范围内准确表示
例如12!=479001600<2147483647(231-1)
而20!=2432902008176640000<9223372036854775807(263-1)可以在64位整数long long int范围内准确表示
但是N取值更大时,N!只能使用浮点数计算,从而产生误差
要求:输入自然数N(N≤50),准确计算自然数N的阶乘
说明50!≈3.04e+64,可以考虑定义数组存储计算结果的各位数字
输入
测试数据有多组,处理到输入结束
输出
每个输出占1行
样例输入
1 10 20 29 30
样例输出
1 3628800 2432902008176640000 8841761993739701954543616000000 265252859812191058636308480000000
#include<iostream>
using namespace std;
#define MAX 1000
int main()
{
int n;
while(cin>>n)
{
int i,j;
int a[MAX]; //存数运算结果
int p , add; //p存储当前结果的位数,add为进位
a[1] = 1;
p = 1;
for(i = 2 ; i <= n ; ++i) //循