7-2 整除分块 (15 分)
7-2 整除分块 (15 分)
整除分块,又称数论分块。是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影。如杜教筛,莫比乌斯反演化简后的整除分段求和等。 整除分块基于这样一个数学现象:对于任意正整数N,集合
的大小总是严格小于2sqrt(N)。 例如当N=10时S={10,5,3,2,1},这就使得对于⌊N/i⌋类型的求和类问题,只要快速枚举S集合,就能在sqrt(N) 级别的复杂度内解决问题。
⌊ ⌋符号是向下取整符,⌊x⌋表示不大于x的最大正整数
在学习整除分块这一算法后提出了一个新的问题,对于给定正整数N,x,令S={x:x=⌊ N/i ⌋,i∈1,2,3...N},时⌊ N/x ⌋在S中是第几大呢(去重降序排序后第几个)?
输入格式:
第一行输入一个正整数T(1≤T≤10 ^6 ),表示测试案例的数目,对于每组案例。 一行两个正整数N,x(1≤x≤N≤10^9 )。
输出格式:
对于每个案例,输出一个正整数,即⌊ N/x ⌋在集合S中降序排第几大。
输入样例::
2
25 9
1000000000 1000000000
结尾无空行
输出样例:
8
63244
结尾无空行
#include<iostream>
#include<cmath>
using namespace std;
double a[100000000];
int b[100000000];
int main(){int T,cnt=0,p=0;double n,m,x,y;cin>>T;while(T--){cin>>n>>x;
// cout<<n<<" "<<x<<endl;m=2*sqrt(n);if(m-(int)m)m=(int)m-1;
// cout<<m<<endl;for(int i=1;i<=n;i++){a[i]=n/i;if(a[i]-int(a[i]))a[i]=(int)a[i];}
// cout<<n<<" "<<x<<endl;y=n/x;
// cout<<n/x<<endl;if(y-(int)y)y=(int)y;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(a[i]>=a[j]){int t=a[i];a[i]=a[j];a[j]=t;}}}
// for(int i=1;i<=n;i++)cout<<a[i]<<" ";
// cout<<endl;for(int i=1;i<=n;i++)if(a[i]!=a[i-1]){
// cout<<a[i]<<" ";b[p++]=a[i];}
// cout<<endl;for(int i=1;i<=p;i++){if(y<=b[i]){cnt++;}}cout<<cnt<<endl;}return 0;
}
7-2 整除分块 (15 分)相关推荐
- 拼题A 2021 跨年挑战赛 7-5 整除阶乘 (15分)
题目 本题要求你在给定区间 [a,b] 内找出使得 n2 +1 整除 n! 的所有正整数 n. 输入格式: 输入在一行中给出两个正整数 0<a<b≤104 ,其中 (b−a) ...
- 【数论】整除分块(数论分块)
目录 引入 找规律 分块数量(时间复杂度分析) 分块边界 模板 例题 1.约束研究 2.约数和 3.余数求和 4.Fear Factoring 5.Floor and Mod 引入 整除分块是数论问题 ...
- C -求和公式(整除分块)
先讲下整除分块是个啥:要求∑i=1n\sum_{i=1}^n∑i=1nn/i 的值,这时候暴力需要O(n)的时间.由于这个区间是连续的,且'/'是向下取整,当i不能整除k时,n/i会等于最小的i ...
- 18行代码解决:(C语言)L1-046 整除光棍 (20分)
立志用更少的代码做更高效的表达 这里所谓的"光棍",并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数整除. ...
- L1-046 整除光棍 (20 分)567
L1-046 整除光棍 (20 分) 这里所谓的"光棍",并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数 ...
- BZOJ1257:[CQOI2007]余数之和(整除分块)
Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值 其中k mod i表示k除以i的余数. 例如j(5 ...
- 整除光棍 (20 分)
整除光棍 (20 分) 这里所谓的"光棍",并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数整除.比如,1 ...
- 【PTA乙级】【1096 大美数 (15 分)】
2022年3月6日22:23:47 文章目录 2022年3月6日22:23:47 1096 大美数 (15 分) 1.[题目描述] 2.[题解] 1096 大美数 (15 分) 1.[题目描述] 题目 ...
- 【PAT乙级】1096 大美数 (15 分) DFS回溯解法
题目 1096 大美数 (15 分) 若正整数 N 可以整除它的 4 个不同正因数之和,则称这样的正整数为"大美数".本题就要求你判断任一给定的正整数是否是"大美数&qu ...
最新文章
- 复数乘法_leetcode No.537 复数乘法
- iOS - OC iOS 开发体系
- Windows Server 2016 部署Hyper-V
- 中国无碳复写纸行业竞争现状与运行态势研究报告2022年
- 一行命令搭建内部的管道
- C#23种设计模式WebCast讲解笔记大全(25讲)
- Python 列表 count( )方法
- SQL Server创建视图
- 64位Office 2010 连接SOHU IMAP服务器遇到问题
- 用最简单的例子告诉你kafka是怎么用的
- Qt::WA_QuitOnClose
- PXC pxc_strict_mode
- 为知笔记使用Typora为默认编辑器(含坑)
- 在JavaScript中改变鼠标指针样式的方法
- android 短信数据库在哪个文件夹,安卓手机的短信备份后存到了哪个文件夹下
- 提取最后一个星号后的数字
- android x86虚拟机不识别网卡,科学网-AndroidSDK-虚拟机之Intel x86虚拟机安装-几个错误解决方法-联网-马飞的博文...
- python爬虫需要cookie_python爬虫(六) Cookie
- 重新设置用户名之后vscode连接出错
- Level Set Evolution Without Re-initialization: A New Variational Formulation
热门文章
- 线程安全和线程不安全的简述及辅助记忆
- Selenium常用API的使用java语言之6-WebDriver常用方法
- React Native (一) react-native-video实现音乐播放器和进度条的功能
- 三个线程打印ABC10次,ABCABCABC....
- hdu 4856 Tunnels
- SAP学习的一个“自作聪明”
- 时间复杂度O(1) O(n) O(logn) O(nlogn)是什么意思?
- 五、Spring中的@Import注解
- javaScript设计模式之面向对象编程(object-oriented programming,OOP)(二)
- NEU(Fst Network Embedding Enhancement via High Order Proximity Approximation)