注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

那一日,泪水打湿雪花冰冷的心

曾经的滋味,回忆在一次次的离合中,回眸时,那一刻,如涟漪般在一刹那融化

 
 
 

日志

 
 

POJ 1707  

2010-08-02 19:47:06|  分类: poj |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
题目是求Sn(k)=1^k+2^k+....+n^k=Ak+1*n^(k+1)+Ak*n^(k)+****A1*n+A0,来求系数
这题要用到Bernoulli数,有定理Sn(k)=1/(k+1)*(sigma(i=0...k)C(k+1,i)*Bi*n^(m+1-i))
而求Bernoulli数,令n=1然后从小到大根据上面的式子递推出来就可以了
#include<cstdio>
#include<cstring>
#define i64 long long
i64 a[30][30][2],c[30][30],b[30][2],m,n,x,y,d;
int k;
inline i64 abs(i64 x){
if(x<0)
return -x;
return x;
}
i64 gcd(i64 a,i64 b){
if(b==0)
return a;
return gcd(b,a%b);
}
void sub(i64 x1,i64 y1,i64 x2,i64 y2){
x=x1*y2-x2*y1;
y=y1*y2;
int d=gcd(abs(x),abs(y));
x/=d;
y/=d;
}
int main(){
c[0][0]=1;
for(int i=1;i<25;++i){
c[i][0]=1;
for(int j=1;j<25;++j)
c[i][j]=c[i-1][j]+c[i-1][j-1];
}
b[0][0]=b[0][1]=1;
for(int i=1;i<25;++i){
x=i+1;
y=1;
for(int j=0;j<i;++j){
d=gcd(c[i+1][j],b[j][1]);
sub(x,y,c[i+1][j]/d*b[j][0],b[j][1]/d);
}
d=gcd(i+1,abs(x));
b[i][0]=x/d;
b[i][1]=(i+1)/d*y;
//printf("%d/%d ",b[i][0],b[i][1]);
}
for(int i=1;i<25;++i){
for(int j=0;j<25;++j){
d=gcd(c[i+1][j]*b[j][0],(i+1)*b[j][1]);
a[i][j][0]=c[i+1][j]*b[j][0]/d;
a[i][j][1]=(i+1)*b[j][1]/d;
}
}
scanf("%d",&k);
i64 ans=1;
for(int i=0;i<k+1;++i){
d=gcd(ans,abs(a[k][i][1]));
ans=ans/d*abs(a[k][i][1]);
}
printf("%lld ",ans);
for(int i=0;i<k+1;++i)
printf("%lld ",ans/a[k][i][1]*a[k][i][0]);
printf("0\n");
return 0;
}
  评论这张
 
阅读(819)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018