一个小知识点,昨天遇到了发现自己一直没学过。

整除分块。
Time:o(sqrt(n))

应用场景

:给定了一个数x,想要得到x除以从1到x所有数的结果的时候可以用到,举一个x为20的例子

结论:

可以发现的是,越是到了后方,越能发现很多连在一起的数被x除了之后得出的答案是一样的。

实现:

我们是否可以利用代码来枚举出来呢。

 for(int l=a,r=a;l<=b;l=r){r=b/(b/l);r+=(r==l);int k=b/l;}

代码中的k就是我们要求的倍数,l和r代表的是:x除以一段区间内所有数都得出相同的值,那么这段区间的左右端点是多少,当然我们想要k不重复的话直接利用下面这段代码也可以

 for(int l=a,r=a;l<=b;l=r+1){r=b/(b/l);int k=b/l;}

所以,,很简单,对吧。

例题:

B - Make Divisible

题意:给定一个a和一个b,求出最小的x+y,使得(b+y)%(a+x)==0

思路:从小到大枚举a,假设当前枚举值是A,kA是A的倍数中最接近b的那个数,然后求出a变成A的花费为X,b变成kA的花费为Y。

那么重点就是如何枚举这个A呢?我们发现反正是要用到k*A和b去比较,所以如果两个不同的A/b得到了同一个k的话实际上是无效的,所以要尽量避免无用的A枚举。

Time:O(sqrt(n)*T)

#include <bits/stdc++.h>
using namespace std;signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t,a,b,k,w,ans;for(cin>>t;t;t--){cin>>a>>b;if(a>=b){cout<<a-b<<endl;continue;}ans=2e9+100;for(int l=a,r=a;l<=b;l=r){r=b/(b/l);r+=(r==l);k=b/l;if(b%l) k++;w=l-a+k*l-b;w<ans?ans=w:0;}cout<<ans<<endl;}return 0;
}

整除分块 B - Make Divisible相关推荐

  1. SDOI2015 约数个数和(莫比乌斯反演经典、双上限整除分块)超详细笔记

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 AcWing 1358. 约数个数和(莫比乌斯反演经典.双上限整除分块) #include <c ...

  2. luogu P3455 [POI2007]ZAP-Queries (莫比乌斯反演 + 整除分块)

    整理的算法模板合集: ACM模板 题目传送门 本题中数据为5e4,我们只需要筛一次5e4就行了. 双倍经验的P4450 双亲数中数据达到了1e6,我们直接筛1e6的莫比乌斯函数有点不可取,因为只有一组 ...

  3. P3935 Calculating 整除分块

    传送门 文章目录 题意: 思路: 题意: 思路: 我们设s(x)=∑i=1nf(x)s(x)=\sum_{i=1}^nf(x)s(x)=∑i=1n​f(x),那么答案就是s(r)−s(l−1)s(r) ...

  4. P2261 [CQOI2007]余数求和 整除分块

    传送门 文章目录 题意: 思路: 题意: n,k≤1e9n,k\le1e9n,k≤1e9 思路: 考虑转换式子,∑i=1nkmodi=∑i=1n(k−⌊ki⌋∗i)=n∗k−∑i=1n⌊ki⌋∗i\s ...

  5. 【WC2014】时空穿梭【组合数】【莫比乌斯反演】【整除分块】【暴力多项式】

    题意:TTT 组数据,给一个 nnn 维空间,第 iii 维大小为 [1,mi]∩Z[1,m_i]\cap \Z[1,mi​]∩Z,求大小为 ccc 的严格偏序上升的共线点集个数.答案模 100071 ...

  6. 【NOI2016】循环之美【莫比乌斯反演】【整除分块】【杜教筛】【类杜教筛】

    传送门 题意:给定n,m,kn,m,kn,m,k,求1≤x≤n,1≤y≤m1\leq x\leq n,1\leq y\leq m1≤x≤n,1≤y≤m时xyx \over yyx​中数值不同的纯循环小 ...

  7. [CQOI2017] 小Q的表格(分块 + 整除分块 + 数学 + 前缀和)

    problem luogu-P3700 solution f(a,b)=f(b,a)f(a,b)=f(b,a)f(a,b)=f(b,a) 意味着我们只用考虑半个棋盘的信息. b∗f(a,a+b)=(a ...

  8. P3235-[HNOI2014]江南乐【整除分块,SG函数】

    正题 题目链接:https://www.luogu.com.cn/problem/P3235 题目大意 TTT组游戏,固定给出FFF.每组游戏有nnn个石头,每次操作的人可以选择一个数量不少于FFF的 ...

  9. AT2300-[ARC068C]Snuke Line【整除分块】

    正题 题目链接: https://www.luogu.com.cn/problem/AT2300 https://atcoder.jp/contests/arc068/tasks/arc068_c 题 ...

最新文章

  1. Python基本语法_异常处理详解
  2. Linux系统gdb工具使用,使用 GDB 工具调试 Go
  3. kalman滤波的解释
  4. Python 实现批量从不同的Linux服务器下载文件
  5. 重要更新,Office Add-in将全面支持Webview2
  6. 【LeetCode-SQL每日一题】——183. 从不订购的客户
  7. ModelMapper 中高级使用 java
  8. BCB线程的互斥与同步
  9. 如何实现快速高效开发?低代码平台jeecgboot完美解决—jeecgboot3.1新特性
  10. C语言究竟是一门怎样的语言?
  11. 创建最原始的XMLHttprequest对象
  12. 穿越计算机的的迷雾--读书笔记一
  13. K3Cloud BOS设计 自定义添加 申请表单
  14. 非线性动力学_第17届全国非线性振动暨第14届全国非线性动力学 和运动稳定性学术会议在南京召开...
  15. 工业测试软件技术指标,工业过程难测参数软测量建模方法研究及应用
  16. Java对象内存分配流程
  17. Pycharm---修改背景颜色和背景图片
  18. Justinmind使用教程(2)——计算表达式及条件用法
  19. 海外文摘杂志海外文摘杂志社海外文摘编辑部2022年第4期目录
  20. ios 渐变透明背景_PPT设计的总是太单调,不如换个背景试试,超精彩!

热门文章

  1. 源码分析 --- Spark如何确定Splits和分区数
  2. 交叉验证中cv=? 与 cv=KFold(n_splits=?)的区别
  3. macbook双系统怎么装mysql_mac装win10双系统的方法_如何安装macos苹果和win10双系统...
  4. 推荐9个值得关注的公众号
  5. maya linux 安装教程视频,在 Ubuntu 上安装 Maya 2020 - Flame.VIP
  6. 团队的英文翻译缩写_团队的英语是什么?简写呢?
  7. 1359 信息学奥赛一本通 围成面积
  8. 【前端】解决盒子被撑大问题 box-sizing
  9. Android值Intent匹配规则挖掘(PMS获取系统apk信息过程)
  10. 不要嫌我啰嗦~继续话痨python