第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个质因子的数的个数).....

最新文章

  1. mysql 主主复制搭建用的命令
  2. Three.js学习(相机,场景,渲染,形状)
  3. Shell--用户配置
  4. [vijos1982][NOIP2015]子串
  5. DotNet中人民币符号的输出
  6. user is not in the sudoers file.This incident will be reported
  7. Java 8 开发顶级技巧
  8. phpwind伪静态规则(IIS,Nginx,Apache)的介绍及代码
  9. 一个简单的flask程序
  10. [原创]浅谈NT下Ring3无驱进入Ring0的方法
  11. 请确保在编译时已将“AjaxControlToolkit.Properties.Resources.NET4.resources”正确嵌入或链接到程序集“AjaxControlToolkit”
  12. 微信小程序域名
  13. 从零打卡leetcode之day 4--无重复最长字符串
  14. MQTT服务器的搭建(Windows平台)
  15. Golang入门教程(十一)beego 框架之RESTful Controller 路由
  16. 这套方法论,彻底终结MySQL同步延迟问题
  17. linux下 GCC编译链接静态库&amp;动态库
  18. 利用JavaScript jQuery实现图片无限循环轮播(不借助于轮播插件)-----转载
  19. HTML5本地储存sessionStorage的销毁数据问题
  20. Java 包(package)

热门文章

  1. hdu6121 Build a tree
  2. Ubuntu中安装Flask模块
  3. selenium 之定位方法
  4. jquery ajax修改全局变量或者局部变量示例代码
  5. Storm完整例子
  6. C#中 哪些是值类型 哪些是引用类型
  7. Python笔记 #01# Convert Python values into any type
  8. Oracle数据库创建表ID字段的自动递增
  9. JS 中根据iframe子页面自动iframe高度
  10. Jenkins FreeStyle or Pipeline Job