1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 初学者乘积 若a和b是两个非负整数,其十进制表示分别是a=(\dots a_2a_1a_0)和b=(\dots b_2b_1b_0),则a和b的初学者乘积,记为a\boxtimes b,是另一个整数c,其十进制表示为c=(\dots c_2c_1c_0),其中c_i是a_i\cdot b_i的末位数字。 例如,234 \boxtimes 765 = 480。
对于所有满足0\leq x_i \leq M的整数列(x_1,\dots,x_R),记F(R,M)为x_1 \boxtimes \dots \boxtimes x_R之和。 例如,F(2, 7) = 204,F(23, 76) \equiv 5870548 \pmod{ 1\,000\,000\,009}。
求F(234567,765432),并将你的答案对1\,000\,000\,009取余。
我的思路:dp.
首先发现每一位的乘法是不进位的,所以拆位处理: 设dp[pos][num]为第pos为数字为num的数有多少个,然后设dp[rr][pos][num]为第rr个数字,然后这个数字的第pos为数字为num的情况有多少个,最后乘上10^pos次方统计即可.
请给我c++代码实现,记得开long long.
|