题目链接:

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. php将“\\”转换成“\”的例子

    str_replace('\\\\', '\\', $url);

  2. Android新手常见问题(一)

    [1]AAPT2 error: check logs for details File->Settings->Build->Gradle一看path里有中文 最根本的原因是因为use ...

  3. 使用webpack2.0 搭建react.js项目

    最近一段时间没有写react.js,发现webpack已经完全升级为2.0了,升级后导致以前的项目不能正常编译,只能重新实践一番 关于webpack2.0和1.x的区别概括起来就是tree shaki ...

  4. step3: 创建jobbole爬虫

    scrapy startproject Redbacktestcd Redbacktest 创建jobbole爬虫 scrapy genspider jobbole2 blog.jobbole.com ...

  5. SQL Server 2008中的MERGE(数据同步)

    OK,就像标题呈现的一样,SQL Server 2008中的MERGE语句能做很多事情,它的功能是根据源表对目标表执行插入.更新或删除操作.最典型的应用就是进行两个表的同步. 下面通过一个简单示例来演 ...

  6. nodejs的socket.io学习笔记

    socket.io学习笔记 1.服务器信息传输: 2.不分组,数据传输: 3.分组数据传输: 4.Socket.io难点大放送(暂时没有搞定): 服务器信息传输 1. // send to curre ...

  7. Java Struts2 (四)

    一.contextMap中的数据操作 root根:List 元素1 元素2 元素3 元素4 元素5 contextMap:Map key value application Map key value ...

  8. 005hystrix.stream信息聚合Turbine

    1.POM配置 和普通Spring Boot工程相比,仅仅添加了Turbine和Spring Boot Starter Actuator依赖 <dependencies> <!--添 ...

  9. if(!IsPostBack)

    作用: Page.IsPostBack 是用来检查目前网页是否为第一次加载,当使用者第一次浏览这个网页时Page.IsPostBack 会传回False,不是第一次浏览这个网页时就传回True:所以当 ...

  10. 按键精灵Q语言基础

    一.数据类型1.1数据类型可以表示一切的类型variant逻辑类型:boolean (true,false)数学类型: 整数:byte(0-255),integer(-32768-32767),lon ...