看来我就是讨厌麻烦的题啊...跳过去这么多实现题...
不过此题在思路上和实现上均不难.
我的代码里:
A[i]=满足条件的i位数中末尾不为0的, B[i]=满足条件的i位数中末尾为0的.
那么递推方程就很简单了:
A[i]=(A[i-1]+B[i-1])*(k-1)
B[i]=A[i-1]
结果是A[n]+B[n].
其实搞了半天我们发现B[i]的存在就是多余的, 直接A[i]=(A[i-1]+A[i-2])*(k-1)就得了
不过以上方法在递推中还是很好用的, 直观, 合并也不难.
下面的代码就很crude了.
十分不完美.
如果你看到了感觉很失望, 可以用动态内存, 可以用滚动数组, 可以把B[]和T[]都删掉,
可以把高精度中每一个数变成9位而不是6位, 可以不用i<500那么白痴的循环.
不过这些对AC毫无影响, 甚至用这么一个crude到vulgar的代码来AC毫无压力.
这就是人生.