如果单纯从数学公式来说,
进一步推导是用二项公式做的
比如说吧:
1. (1+n)^p-(n)^p=a0+a1s(1)+a2s(2)+...+ap-1s(p-1)
2. (n)^p-(n-1)^p=a0+a1s(1)+a2s(2)+...+ap-1s(p-1)
3. (n-1)^p-(n-2)^p=a0+a1s(1)+a2s(2)+...+ap-1s(p-1)
..
n. (2)^p-1^p=a0+a1s(1)+a2s(2)+...+ap-1s(p-1)
再把所有的项相加就可以了,实际上就是利用前s(1),s(2),...,s(n-1)的公式来求s(n)
对于(1+n)^p-(n)^p=(c(p,0)+c(p,1)*n+c(p,2)*n^2,...+c(p,p)*n^p-n^p)
就可以求得:
(1+n)^p-1^p=c(p,0)s(0)+c(p,1)*s(1)+c(p,2)*s(2)+c(p,p-1)*n^p;
所以很容易就算得了三阶,四阶,五阶。。。的公式了
如果是编的话,可以用这个递推公式来做了,
但是,我觉得还是直接算来得方便,而且简单
不用递推公式:
#include <iostream.h>
long fnsub(n,p)
{ long fresult=n;
long i=1;
for(i=1;i<=p;i++)
fresult*=i;
return fresult;
}
void main()
{
int p;
long num;
cout<<"num:"<<endl;
cin>>num>>p;
for(int i=1;i<=num;i++)
fs=fs+fnsub(i,p) ;
cout<<fs<<endl;
}