2019.10.05'题解
T1
模拟即可,清空时要注意时间限制
T2
是个挺好的数学题,有必要缕一下思路
首先定义:
Fp(x,y)为满足xb|y的最大的b,
Ext(x,y)为yFp(x,y)
(不难发现Ext函数是一个完全积性函数即Ext(x,y)*Ext(x,z)=Ext(x,y*z)。)
所以问题转化为求Ext(10,n!)
也就是Ext(5,n!)2(Fp(5,n!))
于是考虑把10k化为2k∗5k,分别求出上面的值后CRT一下。
我们发现当n稍大时%2^k便是0,所以可以特判跑暴力。
现在最主要的便是求出Ext(5,n!)。
把n!拆开看一看:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28......
加粗的全是5的倍数,可以递归求解Ext(5,(n/5)!)
剩下的在mod p意义下由⌊n/p⌋个循环节和剩下的n%p构成,预处理即可。
最后把式子化成最一般的:(图片来源于学长rvalue)
T3
我们可以把1~k看作一个hash,之后每次操作便变成了乘上一个base,再加上该加的值。
可以用线段树维护两个标记:f[k],g[k]分别代表乘上多少,加上多少。
注意当标记叠加时,乘一个数要把g[]也乘上同样的值。加上一个数对f[]无影响。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步