第k个互质数

时间限制:1000 ms  |  内存限制:65535 KB
难度:4
 
描述
两个数的a,b的gcd为1,即a,b互质,现在给你一个数m,你知道与它互质的第k个数是多少吗?与m互质的数按照升序排列。
 
输入
输入m ,k (1<=m<=1000000;1<=k<=100000000)
输出
输出第k个数。
样例输入
10 1
10 2
10 3
样例输出
1
3
7
上传者
TC_常红立
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int maxn = ;
const int moder = ;
int a[]; void fenjie(int n)
{
int cnt = ;
for(int i=;i <= sqrt(n);i++){
if(n%i == ){
a[++cnt] = i; //每个i便是n的质因数
while(n%i == ) n = n/i;
}
}
if(n > )a[++cnt] = n;
a[] = cnt;
} // 计算[1, n]内与m互质的数的个数
int que[<<];
int Count(int n, int m) {
int g = , sum = n;
que[++g] = ;
for(int i = ; i <= a[]; ++i){
int t = g;
for(int j = ; j <= g; ++j){ //容斥。。
que[++t] = que[j] * a[i] * -;
sum += n / que[t];
}
g = t;
}
return sum;
}
int Binary_search(int m, int K){
int l = , r = , mid;
while(l <= r){
mid = (l + r) >> ;
if(Count(mid, m) >= K) r = mid - ;
else l = mid + ;
}
return l;
}
int main ()
{
int m,k;
while(~scanf("%d%d",&m,&k)){
memset(a,,sizeof(a));
fenjie(m);
int ans = Binary_search(m,k);
printf("%d\n",ans);
}
return ;
}

——这题也太变态了吧,看了题解也是半懂不懂

思路:
首先要知道,
    在[1,m]之间与m互质的数的个数=[1,m]之间的总个数-[1,m]之间与n不互质的数的个数
 
所以,要先对m进行质因数分解,求出m有哪些质因数,然后二分枚举答案mid,用容斥求[1,mid]内与m互质的数有多少个,让其结果与k比较
 
判断的时候,[1,mid]之间与m互质的数的数量 = mid - (包含一个质因子的数的个数)+(包含2个质因子的数的个数)-(包含3个质因子的数的个数)+(包含4个质因子的数的个数).....

nyoj762——分解质因数+容斥+二分的更多相关文章

  1. bzoj2440 完全平方数 莫比乌斯值+容斥+二分

    莫比乌斯值+容斥+二分 /** 题目:bzoj2440 完全平方数 链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2440 题意:求第k个小x数 ...

  2. 【周期性/容斥+二分】POJ2773-HAPPY 2006

    [题目大意] 求与n互质的第k个数. [思路] 先求出小于k且与n互质的数,再利用gcd(bt+a,b)=gcd(a,b)的性质求解,效率低.枚举与n互质的数的效率是O(nlogn),求解第k个数的效 ...

  3. 洛谷$P4318$ 完全平方数 容斥+二分

    正解:容斥/杜教筛+二分 解题报告: 传送门$QwQ$ 首先一看这数据范围显然是考虑二分这个数然后$check$就计算小于等于它的不是讨厌数的个数嘛. 于是考虑怎么算讨厌数的个数? 看到这个讨厌数说, ...

  4. BZOJ 2440 莫比乌斯函数+容斥+二分

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 5473  Solved: 2679[Submit][Sta ...

  5. [HNOI2002]跳蚤 【容斥】

    题目描述 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最 ...

  6. 刷题总结——跳蚤(poj1091容斥+分解质因数)

    题目: Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有 ...

  7. 第k个互质数(二分 + 容斥)

    描述两个数的a,b的gcd为1,即a,b互质,现在给你一个数m,你知道与它互质的第k个数是多少吗?与m互质的数按照升序排列. 输入 输入m ,k (1<=m<=1000000;1<= ...

  8. Codeforces 920G List Of Integers 二分 + 容斥

    题目链接 题意 给定 \(x,p,k\),求大于 \(x\) 的第 \(k\) 个与 \(p\) 互质的数. 思路 参考 蒟蒻JHY. 二分答案 \(y\),再去 \(check\) 在 \([x,y ...

  9. Codeforces 920G(二分+容斥)

    题意: 定义F(x,p)表示的是一个数列{y},其中gcd(y,p)=1且y>x 给出x,p,k,求出F(x,p)的第k项 x,p,k<=10^6 分析: 很容易想到先二分,再做差 然后问 ...

随机推荐

  1. Selenium之使用PageFactory初始化pageobject

    使用PageFactory初始化pageobject有什么作用呢,下面举个例子来说明 public BaiduPage baiduPage = PageFactory.initElements(dri ...

  2. C#小票打印机动态纸张尺寸

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. IOS开发-数据库总结

    关于数据存储概念: 数据结构: 基本对象:NSDictionary.NSArray和NSSet这些对象. 复杂对象:关系模型.对象图和属性列表多种结构等. 存储方式: 内存:内存存储是临时的,运行时有 ...

  4. SQL Server怎么备份数据库

    1.打开 2.选择需要备份的数据库,右键 Tasks 3.Tasks的下垃菜单 4.add选备份路径,添加名字 5.OK

  5. 无密码ssh操作步骤备忘

    需求:A机器无密码登陆到B机器 1.A机器执行   ssh-keygen -t rsa  ,在~/.ssh/下生成id_rsa 和  id_rsa.pub两个文件,其中id_rsa.pub是公匙 2. ...

  6. servlet中通过getWriter()获取out返回给浏览器出现中文乱码问题

    感谢博主https://blog.csdn.net/louyongfeng3613/article/details/50160317 在Servlet编程中,经常需要通过response对象将一些信息 ...

  7. Vue 组件间传值

    前言 Vue 作为现在比较火的框架之一,相信您在使用的过程中,也会遇到组件间传值的情况,本文将讲解几种 Vue 组件间传值的几种方法,跟着小编一起来学习一下吧! 实现 注意: 学习本文,需要您对 Vu ...

  8. 为什么 PHP 程序员应该学习使用 Swoole

    最近两个月一直在研究 Swoole,研究成果即将在6.21正式开源发布,这段时间没有来水文章,趁着今天放假来水水吧. 借助这篇文章,我希望能够把 Swoole 安利给更多人.虽然 Swoole 可能目 ...

  9. Java-Minor GC、Major GC、Full GC

    Minor GC: 回收年轻代(Young)空间,包括Eden区.Survivor区. JVM无法为一个新对象分配空间时,比如eden区满了,就会触发Minor GC. Major GC: 清理永久代 ...

  10. 20145329《Java程序设计》第四周学习总结

    教材学习内容总结 封装.继承.多态 封装:封装类私有数据,让用户无法直接存取. 继承: 定义:避免多个类间重复定义共同行为,就是相同的代码提升为父类,java中只能继承一个父类.用继承的方式编写代码可 ...