Codeforces Round #701 (Div. 2) C. Floor and Mod 数学分块
傳送門
題意: 給兩個數x,yx,yx,y。現在你計算有多少對a(a<=x)a(a<=x)a(a<=x)和b(b<=y)b(b<=y)b(b<=y)使得?ab?=amodb\left \lfloor \frac{a}{b} \right \rfloor=a\bmod b?ba??=amodb。
思路: 因為xxx和yyy都是1e91e91e9的范圍,可以想到n\sqrt{n}n?求出答案。我們令?ab?=amodb=k\left \lfloor \frac{a}{b} \right \rfloor=a\bmod b=k?ba??=amodb=k,那么aaa可以寫成k?b+kk*b+kk?b+k,又因為k<bk<bk<b,那么k?k<=k?b+k=a<=xk*k<=k*b+k=a<=xk?k<=k?b+k=a<=x,可得k<=xk<=\sqrt{x}k<=x?,現在考慮知道了kkk能否算出答案呢?考慮如下三個個不等式:{1<=b<=y1<=k?b+k<=xk<b\begin{cases} 1<=b<=y\\ 1<=k*b+k<=x\\ k<b \end{cases}??????1<=b<=y1<=k?b+k<=xk<b?
解得:k<b<=min(y,x/k?1)k<b<=min(y,x/k-1)k<b<=min(y,x/k?1)
我們枚舉kkk就可以得到答案啦。
總結
以上是生活随笔為你收集整理的Codeforces Round #701 (Div. 2) C. Floor and Mod 数学分块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓动态桌面壁纸 全屏会动(安卓动态桌面
- 下一篇: Codeforces Round #70