传送门

题意: 给两个数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就可以得到答案啦。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int x,y;int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);int _; scanf("%d",&_);while(_--){LL ans=0;scanf("%d%d",&x,&y);for(LL k=1;k*k<x;k++) ans+=max(0ll,min(1ll*x/k-1,1ll*y)-k);printf("%lld\n",ans);}return 0;
}
/**/

Codeforces Round #701 (Div. 2) C. Floor and Mod 数学分块相关推荐

  1. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  2. Codeforces Round #701 (Div. 2)赛后补题报告(A~D)

    Codeforces Round #701 (Div. 2)赛后补题报告(A~D) A. Add and Divide 原题信息 http://codeforces.com/contest/1485/ ...

  3. Codeforces Round #740 (Div. 2) D2. Up the Strip dp + 分块优化 + 逆向思维

    传送门 文章目录 题意: 思路 题意: 有nnn个细胞,你初始在第nnn细胞上,假设你当前在xxx处,你每次可以进行如下两个操作: (1)(1)(1)选择[1,x−1][1,x-1][1,x−1]内一 ...

  4. Codeforces Round #701 (Div. 2)小结

    2023大厂真题提交网址(含题解): www.CodeFun2000.com(http://101.43.147.120/) 最近我们一直在将收集到的机试真题制作数据并搬运到自己的OJ上,供大家免费练 ...

  5. Codeforces Round #701 (Div. 2)

    A Add and Divide 题意:给你两个正整数a和b,每次操作可以将a改为a/b向下取整,或让b=b+1,求让a=0时的最小操作数. 思路:显然b=1时,必须先进行b=b+1.先求一直进行a= ...

  6. Codeforces Round #701 (Div. 2) E. Move and Swap 思维 + dp

    传送门 文章目录 题意: 思路: 题意: 思路: 由于是按层来的,所以我们肯定先按照层来分组. 定义dp[i]dp[i]dp[i]为红棋在位置iii的时候的最大得分和. 先考虑不换的情况,我们对于每个 ...

  7. Codeforces Round #701 (Div. 2) D. Multiples and Power Differences 思维构造

    传送门 题意: 给定一个矩阵aaa,让你构造一个矩阵bbb,要求矩阵bbb的每个元素是aaa对应位置元素的倍数,且矩阵bbb的每两个相邻元素相差为k4(k>=1)k^4(k>=1)k4(k ...

  8. Codeforces Round #701 (Div. 2) 总结

    其实Round699也有打的,但是总结变成鸽子飞走了. 赛前30min:睡觉真舒服. 开场一个A题,看了个题感觉这玩意好像不能直接算. 目测答案肯定小于100,log1e18才64不到. 那就枚举给b ...

  9. [Codeforces Round #194 (Div. 2)] Secret 解题报告 (数学)

    题目链接:http://codeforces.com/problemset/problem/334/C 题目: 题目大意: 给定数字n,要求构建一个数列使得数列的每一个元素的值都是3的次方,数列之和S ...

最新文章

  1. 使用纯C++实现SQL Server2005 数据库读写操作详细步骤
  2. 某内存池中的指针用法
  3. matplotlib将图绘制在多福图中
  4. AI岗位面试屡战屡败?这份“翻盘秘籍”快收好!
  5. python报错:UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe0 in position 0: ordinal not in rang
  6. Android 获取外网IP,实测有效
  7. 《软件需求最佳实践》阅读笔记01
  8. 排序算法02--冒泡排序
  9. [收藏]上班族的真实写照
  10. 2017CCPC秦皇岛 L题One-Dimensional MazeZOJ3992【模拟】
  11. FFmpeg 和 MP4Box 几个命令
  12. MAXHUB会议平板的无线投屏怎么用?
  13. 据当前时间获取本学期周次
  14. fifo的rdata_异步FIFO设计与实现
  15. Windows Server 2016修改计算机名
  16. echarts饼图设置每个扇形的颜色
  17. Http协议和抓包工具
  18. 计算机教案在幻灯片中插入影片,小学六年级上册《在作品中插入“电影”片段》信息技术教案...
  19. 社交网络:有意义的不仅是邓巴数
  20. Kite的学习历程之SpringCloud之Rest微服务构建之微服务提供者支付Moudle

热门文章

  1. linux+arch系统下载,Linux
  2. 如何计算一只鸡的表面积?各大专业的奇葩解法
  3. 《SAS编程与数据挖掘商业案例》学习笔记之十九
  4. adb android源码分析,Android源码分析(十六)----adb shell 命令进行OTA升级
  5. ensp查看历史配置命令_华为eNSP常用命令
  6. opencv计算两数组的乘积_#剑指Offer#12. 构建乘积数组
  7. java file_java开发之File类详细使用方法介绍
  8. Java连续获取两个输入,java 获取控制台的输入的两个方法
  9. c++STL中的find()函数 有两种使用方法
  10. C++实现邻接表存储的图及bfs遍历