电子商务网站建设与维护试卷,做淘宝客要有网站吗,台州建设局网站,私人域名可以做公司网站备案吗题目链接#xff1a;http://poj.org/problem?id1707 利用bernoulli方程来解决此题。 数学上#xff0c;伯努利数Bn的第一次发现是与下述数列和的公式有关#xff1a; 其中n为固定的任意正整数。 这数列和的公式必定是变量为m#xff0c;次数为n1的多项式#xff0c;称为伯… 题目链接http://poj.org/problem?id1707 利用bernoulli方程来解决此题。 数学上伯努利数Bn的第一次发现是与下述数列和的公式有关 其中n为固定的任意正整数。 这数列和的公式必定是变量为m次数为n1的多项式称为伯努利多项式。伯努利多项式的系数与伯努利数有密切关系如下 举例说把n取为1我们有 伯努利数可以由下列递推公式计算 初值条件为B0 1。 [摘自wikipedia] 注意:这里计算的是0~m-1的值因此最后第二项还要加上一个m^n; 1 //STATUS:C_AC_0MS_140KB2 #includestdio.h3 #includestdlib.h4 #includestring.h5 #includemath.h6 #includeiostream7 #includestring8 #includealgorithm9 #includevector
10 #includequeue
11 #includestack
12 #includemap
13 using namespace std;
14 #define LL __int64
15 #define pii pairint,int
16 #define Max(a,b) ((a)(b)?(a):(b))
17 #define Min(a,b) ((a)(b)?(a):(b))
18 #define mem(a,b) memset(a,b,sizeof(a))
19 #define lson l,mid,rt1
20 #define rson mid1,r,rt1|1
21 const int N25,INF0x3f3f3f3f,MOD40001,STA8000010;
22 const double DNF1e13;
23
24 LL B[N][2],C[N][N],f[N][2];
25 int n,m;
26
27
28 LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
29 LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
30
31 void getC(int n)
32 {
33 int i,j;
34 n;
35 for(i0;in;i)C[i][0]C[i][i]1;
36 for(i2;in;i){
37 for(j1;jn;j){
38 C[i][j]C[i-1][j-1]C[i-1][j];
39 }
40 }
41 }
42
43 void bernoulli(int n)
44 {
45 int i,m;
46 LL s[2],b[2],l,g;
47 B[0][0]1;B[0][1]1;
48 for(m1;mn;m){
49 s[0]1,s[1]1;
50 for(i1;im;i){
51 b[0]C[m1][i]*B[i][0];
52 b[1]B[i][1];
53 llcm(s[1],b[1]);
54 s[0]l/s[1]*s[0]l/b[1]*b[0];
55 s[1]l;
56 }
57 s[0]-s[0];
58 if(s[0]){
59 ggcd(s[0],s[1]*C[m1][m]);
60 B[m][0]s[0]/g;
61 B[m][1]s[1]*C[m1][m]/g;
62 }
63 else B[m][0]0,B[m][1]1;
64 }
65 }
66
67 int main()
68 {
69 // freopen(in.txt,r,stdin);
70 int i,j;
71 LL g,maxlcm;
72 getC(20);
73 bernoulli(20);
74 while(~scanf(%d,m))
75 {
76 for(i0;im;i){
77 ggcd(C[m1][i],B[i][1]);
78 f[i][0]C[m1][i]/g*B[i][0];
79 f[i][1]B[i][1]/g;
80 }
81 maxlcmf[0][1];
82 for(i1;im;i){
83 maxlcmlcm(maxlcm,f[i][1]);
84 }
85 if(maxlcm0)maxlcm-maxlcm;
86 for(i0;im;i){
87 f[i][0]*maxlcm/f[i][1];
88 }
89 f[1][0]maxlcm*(m1);
90
91 printf(%I64d,(m1)*maxlcm);
92 for(i0;im;i)
93 printf( %I64d,f[i][0]);
94 printf( 0\n);
95 }
96 return 0;
97 } 转载于:https://www.cnblogs.com/zhsl/archive/2013/04/08/3009161.html