题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=3388

题目大意:

求同时与m,n互质的第k个数是多少!

解题思路:

HDU-4135类似,将m和n的最小公倍数素数分解。

然后二分答案,每次求出1-mid中与m和n的最小公倍数互质的数目,大于等于k 右区间 = mid - 1

否则 左区间 = mid + 1

注意,这里不用枚举子集的方式写,因为这样对同一部分需要计算多次lcm,用DFS写不会超时。

注意特判,当n=1且m=1,答案就是k。

注意,这里是;两者都为1的时候特判,不是一者为1的时候特判。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
set<ll>c;
void init(ll n)//n质因子分解
{
for(ll i = ; i * i <= n; i++)
{
if(n % i == )
{
c.insert(i);
while(n % i == )n /= i;
}
}
if(n != )c.insert(n);
} ll ans, tot;
ll a[];
void dfs(ll d, ll t, ll s, ll n)
{
if(d == tot)
{
if(t&)ans -= n / s;
else ans += n / s;
return;
}
dfs(d + , t, s, n);
dfs(d + , t + , s * a[d], n);
} const ll INF = 0x3f3f3f3f3f3f3f3f;
int main()
{
ll T, m, n, k, cases = ;
cin >> T;
while(T--)
{
c.clear();
scanf("%lld%lld%lld", &m, &n, &k);
if(m == && n == )
{
printf("Case %lld: %lld\n", ++cases, k);
continue;
}
init(m);
init(n);
tot = ;
for(set<ll>::iterator it = c.begin(); it != c.end(); it++)
a[tot++] = *it;
ll l = , r = INF, answer;
while(l <= r)
{
ll mid = l + (r - l) / ;
ans = ;
dfs(, , , mid);
if(ans >= k)
answer = mid, r = mid - ;
else l = mid + ;
}
printf("Case %lld: %lld\n", ++cases, answer);
}
return ;
}

hdu-3388 Coprime---容斥定理&&DFS版的更多相关文章

  1. HDU - 4135 Co-prime 容斥定理

    题意:给定区间和n,求区间中与n互素的数的个数, . 思路:利用容斥定理求得先求得区间与n互素的数的个数,设表示区间中与n互素的数的个数, 那么区间中与n互素的数的个数等于.详细分析见求指定区间内与n ...

  2. HDU 5514 Frogs 容斥定理

    Frogs Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5514 De ...

  3. HDU 4135 Co-prime (容斥+分解质因子)

    <题目链接> 题目大意: 给定区间[A,B](1 <= A <= B <= 10 15)和N(1 <=N <= 10 9),求出该区间中与N互质的数的个数. ...

  4. hdu 5072 Coprime (容斥)

    Problem Description There are n people standing in a line. Each of them has a unique id number. Now ...

  5. hdu 4135 Co-prime(容斥)

    Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  6. HDU 4135 Co-prime 欧拉+容斥定理

    Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. 题解报告:hdu 4135 Co-prime(容斥定理入门)

    Problem Description Given a number N, you are asked to count the number of integers between A and B ...

  8. HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. HDU 1796How many integers can you find(简单容斥定理)

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

随机推荐

  1. EntityManager对象管理

    根据EntityManager对象的管理方式,可以有以下两种类型: — 容器托管的(container-managed)EntityManager对象 容器托管的EntityManager对象最简单, ...

  2. 登录mysql 报 Access denied for user 'root'@'localhost' 错误

    安装mysql后登录提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:yes) 解决如下 ...

  3. 实现 如 goole closure 类似功能模块加载函数

    看过goole  closure 的同学都知道  其中定义一个类名函数时候只要  inlude("")   想加载某个模块只要require("")就可以利用: ...

  4. angular-ui-router动态加载模块

    1.定义index.html主页,对于通用的js就不用require依赖加载了,其中main.js作为主模块,用require添加系统路由模块. <!DOCTYPE html> <h ...

  5. go get 下载需要的相关工具

    文档来源: https://code.google.com/p/go-wiki/wiki/GoGetTools 被墙了,所以转在这个备用. Installing Version Control Too ...

  6. 如何将一个SpringBoot简便地打成一个war包(转)

    为什么要把SpringBoot打成war包 正常情况下SpringBoot项目是以jar包的形式,通过命令行: java -jar demo.jar 来运行的,并且SpringBoot是内嵌Tomca ...

  7. 移动端布局注意事项与less

    用Koala实现less的实时编译 1.下载Koala(Koala可以实现实时编译) 2.把CSS文件夹(如index.css,index.less)拖到Koala中 3.点击到需要编译的index. ...

  8. 移动端h5开发相关内容总结css篇--笔记

    原文参考http://mp.weixin.qq.com/s/Nho2DHj-Y59j2F62vpN9jQ 1.开发移动端,头部必要的配置<meta name="viewport&quo ...

  9. Open images from USB camera on linux using V4L2 with OpenCV

    I have always been using OpenCV's VideoCapture API to capture images from webcam or USB cameras. Ope ...

  10. [uva] 10099 - The Tourist Guide

    10099 - The Tourist Guide 题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...