题目传送门
大致思路
已知 $q=[\frac{x}{y}]$ 和 $r=x\%y$
$$q=\frac{x-r}{y} $$
$$x=qy+r $$
$x$ 有上限 $k$ , $y$越小,对于该 $q$ 能取到的 $r$ 越大
那么就让 $y=r+1$ 取到最小
对于所有 $q$ 二分得到能取到的最大 $r$ ,然后在 $r$ 集合中二分找到小于等于这个最大的 $r$ 的最大值,将其与该 $q$ 组合,即删去
Code
1 | void solve() { |
题目传送门
大致思路
求$[\frac{N}{M}]$(mod 10007) , 有 $((N\%10007-N\%M))\%10007*inv\_m$(mod 10007)
新加入一段长度 $l$ ,数字为 $c$ 的段,那么$N=(N*10^{l}+(10^{l}-1)/9*c)$
但是 $9$ 不是质数,不能求逆元,那么直接求一段全为 $c$ 长度为 $l$ 的数字加到 $N$ 中
直接求 $S(l)=1+10^{1}+10^{2}....+10^{l-1}$会超时,考虑利用快速幂中类似方法求取:
当前 $l$ 为偶数,则 $S(l)=S(l/2)*(1+10^{l/2})$
当前 $l$ 为奇数,则 $S(l)=S(l-1)*10+c$
递归求得
Code
1 | int fastpow(int base, int exp,int mod) { |
说些什么吧!