poj 2773 Happy 2006(容斥+二分)
来源:互联网 发布:linux播放avi屏幕闪烁 编辑:程序博客网 时间:2024/05/21 01:57
输入m和k,求与m互质的第k个数,与m互质的第一个数为1。先分析求某个范围内与m互质的数,肯定要容斥的,现在求第k个与m个互质的数字,而且范围不知道,既然不知道,那就二分来找这个范围,找到后也就找到结果了。
#include <stdio.h>#include <string.h>typedef __int64 LL;const LL One = 1;const LL INF = One<<61;LL p[62];int plen;void getFactor(LL num){ plen = 0; for(LL i = 2; i <= num/i; ++i) { if(num%i == 0) { p[plen++] = i; while(num%i == 0) num /= i; } } if(num > 1) p[plen++] = num;}LL C(LL num){ LL res = 0; LL limit = One<<plen; for(LL i = 1; i < limit; ++i) { LL mult = 1; LL cnt = 0; for(int j = 0; j < plen; ++j) { if(i&(One<<j)) { mult *= p[j]; cnt++; } } if(cnt&1) res += num/mult; else res -= num/mult; } return num-res;}int main(){ LL m,k; while(scanf("%I64d %I64d",&m,&k) != EOF) { getFactor(m); LL L = 1; LL R = INF; LL mid; while(L <= R) { mid = (L+R) >> 1; if(C(mid) < k) L = mid + 1; else R = mid - 1; } printf("%I64d\n",L); } return 0;}
阅读全文
0 0
- POJ 2773 Happy 2006 二分+容斥
- POJ 2773 Happy 2006 (二分+容斥)
- poj 2773 Happy 2006(容斥原理+二分)
- POJ 2773 Happy 2006(二分+容斥)
- POJ 2773 Happy 2006(容斥原理+二分)
- poj 2773 Happy 2006(容斥+二分)
- POJ 2773 Happy 2006 二分+容斥原理
- POJ 2773 Happy 2006 【数论,容斥原理+二分】
- [二分+容斥原理] poj 2773 Happy 2006
- [POJ 2773]Happy 2006(容斥原理+二分查找)
- POJ 2773 Happy 2006 (二分答案+容斥)
- POJ 2773 Happy 2006 (容斥原理+二分)
- POJ 2773Happy 2006 二分+容斥(入门
- poj 2773 Happy 2006 容斥原理+筛素数+二分
- POJ-2773 Happy 2006(容斥,二分,dfs)
- POJ 2773 Happy 2006 容斥定理+二分
- POJ 2773 Happy 2006 (容斥)
- poj 2773 Happy 2006(容斥原理)
- 关于 位,字符,字节 以及关系
- Vue.js知识总结——指令
- 欢迎使用CSDN-markdown编辑器
- LocalStorage存储JSON对象的问题 localStorage
- 对应特殊字符的字符实体
- poj 2773 Happy 2006(容斥+二分)
- cmake的基础和进阶
- 记录一下我对于STM32的学习心得
- hdu 6170
- Redis学习之Sentinel原理详解
- 广播监听网络
- Java获取此次请求URL以及服务器根路径的方法
- android 图片大小各不一样大
- SpringMVC数据绑定流程