Skip to content

Polynomial

时间限制: 1 秒

空间限制: 512 MB

相关文件: 题目目录

问题描述

小K最近刚刚习得了一种非常酷炫的多项式求和技巧,可以对某几类特殊的多项式进行运算。

非常不幸的是,小K发现老师在布置作业时抄错了数据,导致一道题并不能用刚学的方法来解,于是希望你能帮忙写一个程序跑一跑。

给出一个 \(m\) 阶多项式\(\(f(x)=\sum_{i=0}^mb_ix^i\)\)

对给定的正整数 \(a\) ,求\(\(S(n)=\sum_{k=0}^na^kf(k)\)\)

由于这个数可能比较大,所以你只需计算 \(S(n)\)\(10^9+7\) 取模后的值(即计算除以 \(10^9+7\) 后的余数)。

输入格式

从标准输入读入数据。

第一行包含三个整数 \(n,m,a\)

第二行包含\(m+1\)个整数,\(b_0,b_1,\dots,b_m\) 描述给定多项式的系数。

对于所有数据,\(1\leq a,b_i\leq 10^9\)

输出格式

输出到标准输出。

输出一行一个数,表示 \(S(n)\)\(10^9+7\) 取模后的结果。

样例1输入

5 2 3
1 1 1

样例1输出

9658

样例1解释

\(f(x)=1+x+x^2\),故 \(f(0)=1,f(1)=3,f(2)=7,f(3)=13,f(4)=21,f(5)=31\)

\(f(0)+3f(1)+9f(2)+27f(3)+81f(4)+243f(5)=1+3*3+9*7+27*13+81*21+243*31=9658\)

样例2输入

100 3 233
1 2 3 4

样例2输出

994811687

样例3输入

20170314 10 11037
1 2 3 4 5 6 7 8 9 10 11

样例3输出

133604769

子任务

测试点 \(n\) \(m\) \(a\)
\(1\) ~ \(2\) \(\leq 1000\) \(\leq 10\) \(\leq 10^9\)
\(3\) \(\leq 10^9\) \(=1\) \(=1\)
\(4\) \(\leq 10^9\) \(=2\) \(=1\)
\(5\) \(\leq 10^9\) \(=3\) \(\leq 10^9\)
\(6\) \(\leq 10^9\) \(=5\) \(=1\)
\(7\) ~ \(8\) \(\leq 10^9\) \(\leq 20\) \(=1\)
\(9\) \(\leq 10^9\) \(\leq 50\) \(\leq 10^9\)
\(10\) \(\leq 10^9\) \(\leq 100\) \(\leq 10^9\)