有趣的阶乘
阶乘有多大?
Time Limit:1000MS Memory Limit:65536K
Total Submit:1043 Accepted:296
Description
笨笨已经会编程计算机10以内的阶乘了,现在有人请他帮忙计算一下S=1!+2!+3!+…+n!(n≤50)其中“!”表示阶乘。他用原来的办法算来算去总是得不到正确结果。你能帮帮他,让他的程序AC吗?
Input
输入正整数N。
Output
输出结果S。
Sample Input
6
Sample Output
873
下面是我的程序
#include <iostream>
using namespace std;
unsigned long long int a (unsigned long long int n)
{
unsigned long int result;
if(n==0)
result=1;
else
result=n*a(n-1);
return result;
}
int main ()
{
unsigned long long int i,n,s;
cin>>n;
s=0;
for(i=1;i<=n;i++)
{
s=s+a(i);
}
cout<<s<<endl;
system ("PAUSE");
return 0;
}
这个程序在30的阶乘以内可以正常运行,大于它之后数据就会溢出,但是定义的数据的长度已经是最大的了。请问一下怎么处理这个问题?