hdu-3388 Coprime---容斥定理&&DFS版
题目链接:
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版的更多相关文章
- HDU - 4135 Co-prime 容斥定理
题意:给定区间和n,求区间中与n互素的数的个数, . 思路:利用容斥定理求得先求得区间与n互素的数的个数,设表示区间中与n互素的数的个数, 那么区间中与n互素的数的个数等于.详细分析见求指定区间内与n ...
- HDU 5514 Frogs 容斥定理
Frogs Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5514 De ...
- HDU 4135 Co-prime (容斥+分解质因子)
<题目链接> 题目大意: 给定区间[A,B](1 <= A <= B <= 10 15)和N(1 <=N <= 10 9),求出该区间中与N互质的数的个数. ...
- hdu 5072 Coprime (容斥)
Problem Description There are n people standing in a line. Each of them has a unique id number. Now ...
- hdu 4135 Co-prime(容斥)
Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- HDU 4135 Co-prime 欧拉+容斥定理
Co-prime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 题解报告:hdu 4135 Co-prime(容斥定理入门)
Problem Description Given a number N, you are asked to count the number of integers between A and B ...
- HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 1796How many integers can you find(简单容斥定理)
How many integers can you find Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 ...
随机推荐
- EntityManager对象管理
根据EntityManager对象的管理方式,可以有以下两种类型: — 容器托管的(container-managed)EntityManager对象 容器托管的EntityManager对象最简单, ...
- 登录mysql 报 Access denied for user 'root'@'localhost' 错误
安装mysql后登录提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:yes) 解决如下 ...
- 实现 如 goole closure 类似功能模块加载函数
看过goole closure 的同学都知道 其中定义一个类名函数时候只要 inlude("") 想加载某个模块只要require("")就可以利用: ...
- angular-ui-router动态加载模块
1.定义index.html主页,对于通用的js就不用require依赖加载了,其中main.js作为主模块,用require添加系统路由模块. <!DOCTYPE html> <h ...
- go get 下载需要的相关工具
文档来源: https://code.google.com/p/go-wiki/wiki/GoGetTools 被墙了,所以转在这个备用. Installing Version Control Too ...
- 如何将一个SpringBoot简便地打成一个war包(转)
为什么要把SpringBoot打成war包 正常情况下SpringBoot项目是以jar包的形式,通过命令行: java -jar demo.jar 来运行的,并且SpringBoot是内嵌Tomca ...
- 移动端布局注意事项与less
用Koala实现less的实时编译 1.下载Koala(Koala可以实现实时编译) 2.把CSS文件夹(如index.css,index.less)拖到Koala中 3.点击到需要编译的index. ...
- 移动端h5开发相关内容总结css篇--笔记
原文参考http://mp.weixin.qq.com/s/Nho2DHj-Y59j2F62vpN9jQ 1.开发移动端,头部必要的配置<meta name="viewport&quo ...
- 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 ...
- [uva] 10099 - The Tourist Guide
10099 - The Tourist Guide 题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemi ...