让人觉得脑子不够用的构造
考虑对于一个区间([l,r])如何让它调整使得最后的结果恰好加上(1)。
注意到对于一个(<10^{18})的数(x),(f(x+10^{18}) = f(x)+1),所以如果(r-l = 10^{18} - 1)且(l < 10^{18}),那么将区间([l,r])变为区间([l+1,r+1])之后,答案恰好增加(1)。
而(a leq 10^{18}),所以我们初始取(l=0,r=10^{18}-1),之后不断将区间([l,r])变为区间([l+1,r+1]),一定可以在不超过(10^{18})次内找到满足(mod a=0)的(l,r),也就是每一次从([l,r])变为([l+1,r+1])时(l < 10^{18}),所以这样是一定可以构造出方案的。
那么我们最后需要做的事情就是求(sumlimits_{i=0}^{10^{18}-1}f(i))的值了。
(egin{align*} sumlimits_{i=0}^{10^{18}-1} f(i) & = 45 imes 10^{17} + 10 imes sumlimits_{i=0}^{10^{17}-1} f(i) \ & = 45 imes 10^{17} + 450 imes 10^{16} + 100 imes sumlimits_{i=0}^{10^{16}-1} f(i) \ &= ... \ &= 45 imes 18 imes 10^{17} \ &= 8.1 imes 10^{19} end{align*})
那么我们令(l = a - (8.1 imes 10^{19} mod a) , r = l + 10^{18}-1),就是一组合法的解。
注意上面保证了(l eq 0)
都说到这里了你难道不会写代码吗?