由题意,生成函数 g n ( x ) g^n(x) gn(x) 为下列各式的乘积
汉堡: ( 1 + x 2 + x 4 + . . . ) = 1 / ( 1 − x 2 ) (1 + x^2 + x^4 + ...) = 1 / (1 - x^2) (1+x2+x4+...)=1/(1−x2)
可乐: ( 1 + x ) = ( 1 − x 2 ) / ( 1 − x ) (1 + x) = (1 - x^2) / (1 - x) (1+x)=(1−x2)/(1−x)
鸡腿: ( 1 + x + x 2 ) = ( 1 − x 3 ) / ( 1 − x ) (1 + x + x^2) = (1 - x^3) / (1 - x) (1+x+x2)=(1−x3)/(1−x)
蜜桃多: ( x + x 3 + x 5 + . . . ) = x / ( 1 − x 2 ) (x + x^3 + x^5 + ...) = x / (1 - x^2) (x+x3+x5+...)=x/(1−x2)
鸡块: ( 1 + x 4 + x 8 + x 1 2 + . . . ) = 1 / ( 1 − x 4 ) (1 + x^4 + x^8 + x^12 + ...) = 1 / (1 - x^4) (1+x4+x8+x12+...)=1/(1−x4)
包子: ( 1 + x + x 2 + x 3 ) = ( 1 − x 4 ) / ( 1 − x ) (1 + x + x^2 + x^3) = (1 - x^4) / (1 - x) (1+x+x2+x3)=(1−x4)/(1−x)
土豆片炒肉: ( 1 + x ) = ( 1 − x 2 ) / ( 1 − x ) (1 + x) = (1 - x^2) / (1 - x) (1+x)=(1−x2)/(1−x)
面包: ( 1 + x 3 + x 6 + x 9 + . . . ) = 1 / ( 1 − x 3 ) (1 + x^3 + x^6 + x^9 + ...) = 1 / (1 - x^3) (1+x3+x6+x9+...)=1/(1−x3)
化简得
g
n
(
x
)
=
x
/
(
1
−
x
)
4
=
Σ
n
=
0
∞
(
3
n
+
3
)
x
n
+
1
g^n(x) = x / (1 - x)^4 =\Sigma_{n=0}^\infty \tbinom{3}{n+3}x^{n+1}
gn(x)=x/(1−x)4=Σn=0∞(n+33)xn+1
注意,这里使用了公式
1
/
(
1
−
x
)
k
=
Σ
n
=
0
∞
(
k
−
1
n
+
k
−
1
)
x
n
1 / (1 - x)^k =\Sigma_{n=0}^\infty \tbinom{k-1}{n+k-1}x^{n}
1/(1−x)k=Σn=0∞(n+k−1k−1)xn
所以, x n x^n xn 的系数为 ( 3 n + 2 ) \tbinom{3}{n+2} (n+23)
Code
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e4 + 7, N = 501;
char s[N];
int main()
{
cin >> s;
long long n = 0;
for (int i=0; s[i]; i++)
n = (n + s[i] - '0') % mod;
cout << n * (n + 1) * (n + 2) / 6 % mod << endl;
// 由鸽笼原理可知,连续的三个整数的乘积必是6的倍数
return 0;
}