题目链接:

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. Hibernate各种查询操作(二)

    一.QBC的查询方式 使用QBC不在需要写hql语句,而是使用criteria对象的各种方法来实现. 1.查询所有 //使用QBC方式查询所有 @Test public void test11(){ ...

  2. <数据挖掘导论>读书笔记8FP树

    1FP树

  3. <数据挖掘导论>读书笔记1

    数据预处理: 1.聚集:将两个或者多个对象合并成单个对象. 2.抽样:一种选择数据对象子集进行分析的常用方法.抽象方法:简单随机抽样 和渐进抽样 3.维度约:我觉得翻译的不好,英文明细是降维.降维技术 ...

  4. 获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)

    分析过程 这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的. 一般朋友,都会看到如下通用获取IP地址方法. function getIP() { if (isset($_ ...

  5. [转]asp.net5中使用NLog进行日志记录

    本文转自:http://www.cnblogs.com/sguozeng/articles/4861303.html asp.net5中使用NLog进行日志记录 asp.net5中提供了性能强大的日志 ...

  6. EV3DVue干涉检测的优势分析

    过去几年中国制造行业获得了的快速发展,各企业为了尽可能早的抢占市场,对模具的生产周期要求越来越短,精度要求越来越高,这就对模具设计以及制造等各个环节提出了更高的要求.随着CAD/CAM技术的深入应用, ...

  7. linux 安装php扩展swoole redis

    本文讲的是已经有redis.so 和swoole.so文件的情况 我的环境是xampp php的扩展目录为 /opt/lampp/lib/php/extensions/no-debug-non-zts ...

  8. RegExp.prototype.exec()使用技巧

    RegExp.prototype.exec() exec() 方法在一个指定字符串中执行一个搜索匹配.返回一个结果数组或 null. 如果你只是为了判断是否匹配(true或 false),可以使用 R ...

  9. thinkphp5设置404页面不跳转

    thinkphp5设置404页面的步骤: 1. 首先关闭调试模式,即配置application/config文件,使'app_debug' => false 2. 添加自定义404页面跳转地址, ...

  10. 动态赋值poster,无法显示

    vue操作video的poster属性时,动态给poster赋值,在chrome下是无法显示的 解决办法 在赋值后,找到video元素.load()下就会看到封面图了