阶乘的精确值

输入补超过1000的正整数n,输出n!=1*2*3....*n的精确结果..

样例输入:30

样例输出:265252859812191058636308480000000

 1 #include "stdafx.h"
 2 #include<iostream>
 3 #include<string>
 4 using namespace std;
 5 const int maxn=3000;
 6 int f[maxn];
 7 int _tmain(int argc, _TCHAR* argv[])
 8 {
 9     int i ,j,n;
10     cin>>n;
11     f[0]=1;
12     for(int k = 1;k!=maxn;k++)
13     {
14         f[k]=0;
15     }
16     for(i= 2;i<=n;i++)
17     {
18         int c= 0;
19         for(j = 0;j<maxn;j++)
20         {
21             int s =f[j]*i+c;
22             f[j] = s%10;
23             c=s/10;
24         }
25     }
26     for(j= maxn-1;j>=0;j--)if(f[j]) break;
27     for(i = j;i>=0;i--) cout<<f[i];
28     
29     return 0;
30 }

 其实就是模拟手算的一个过程.将每次乘得的结果与n相乘.求出结果.个位留下.除以10得到进位.到高位上去...

原文地址:https://www.cnblogs.com/crazycodehzp/p/3519560.html