100+50+20+1=171pts.
T2 求解
纯数学题,唉。这里只写一下关键的步骤。一看这个 n≤109,肯定是 O(1) 没跑了。
题目中要求的 ans 可以转化为:
ans=[k=1∑m(2k−1)×10k−1×9]modM=9[k=1∑m(2k−1)×10k−1]modM.
其中 M=233,333,m=21(n+1)。注意,2,333 是素数,23,333 也是素数,但是 233,333 不是素数。。
我们盯住 ∑ 开头的那串,首先变形成等比数列:
记:x=∑k=1m(2k−1)×10k−1.
10x=∑k=1m(2k−1)×10k=(2m−1)×10m+∑k=1m−1(2k−1)×10k.
而 ∑k=1m−1(2k−1)×10k=∑k=2m(2k−3)×10k−1.(换元,把 k 换成 k−1)
9x=10x−x=(2m−1)×10m+[∑k=2m(2k−3)×10k−1−∑k=1m(2k−1)×10k−1].
我们再关注后面中括号的式子,变形:=1+∑k=2m[(2k−3)−(2k−1)]×10k−1=1−2∑k=2m10k−1=1−2∑k=1m−110k.
所以:9x=(2m−1)×10m−2∑k=1m−110k−1.
然后用裂项相消法来计算 ∑10k:
记 y=∑k=1m−110k.
10y=∑k=2m10k.
9y=10y−9y=∑k=2m10k−∑k=1m−110k=10m−10.
把这个式子除以 9 就得到 y。
让我们把所有东西撮一块儿:
ans=(2m−1)×10m−92(10m−10)modM
我去,还要除以 9,那么我们求逆元吧。(注意 M=233,333 不是素数,不能用费马小定理。)