题目是给出m,k。找到跟第k个跟m互素的数是多少。

  构造肯定不行,再加上数据范围,只能二分。思路是二分枚举[1,2^64]范围内所有的数x,找到1到x范围内与m不互素的数的个数y(用容斥原理)。然后用x - y,如果等于k就是结果。

找到1到x范围内与m不互素的数的个数y:这个过程可以先把m分解质因子,记录m所有的质因子。f[i]表示含有i个质因子的数的个数。ans = m - f(1) + f(2) - f(3) ....

ps:这里二分要找满足 == k最左边的数,推了半天发现把二分写错了。。。T_T

//#pragma comment(linker,"/STACK:327680000,327680000")
#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <cstring>
#include <algorithm>
#include <string>
#include <set>
#include <functional>
#include <numeric>
#include <sstream>
#include <stack>
#include <map>
#include <queue>#define CL(arr, val)    memset(arr, val, sizeof(arr))
#define REP(i, n)       for((i) = 0; (i) < (n); ++(i))
#define FOR(i, l, h)    for((i) = (l); (i) <= (h); ++(i))
#define FORD(i, h, l)   for((i) = (h); (i) >= (l); --(i))
#define L(x)    (x) << 1
#define R(x)    (x) << 1 | 1
#define MID(l, r)   (l + r) >> 1
#define Min(x, y)   (x) < (y) ? (x) : (y)
#define Max(x, y)   (x) < (y) ? (y) : (x)
#define E(x)        (1 << (x))
#define iabs(x)     (x) < 0 ? -(x) : (x)
#define OUT(x)  printf("%I64d\n", x)
#define Read()  freopen("data.in", "r", stdin)
#define Write() freopen("data.out", "w", stdout);typedef long long LL;
const double eps = 1e-8;
const double pi = acos(-1.0);
const double inf = ~0u>>2;using namespace std;const int N = 1000010;int p[N], cnt;void init(int m) {cnt = 0;for(int i = 2; i*i <= m; ++i) {if(m%i == 0) {p[cnt++] = i;while(m%i == 0) {m /= i;}}}if(m != 1)  p[cnt++] = m;
}LL cal(LL n) {int i, j, bit;LL res = 0, sum;for(i = 1; i < 1<<cnt; ++i) {bit = 0; sum = 1;for(j = 0; j < cnt; ++j) {if(i&(1<<j)) {bit++;sum *= p[j];}}if(bit&1)   res -= n/sum;else    res += n/sum;}return n + res;
}int main() {//Read();int m, k;while(cin >> m >> k, !cin.eof()) {init(m);LL l = 1, r = (1LL<<60), mid, tmp;while(r - l > 0) {mid = MID(l, r);tmp = cal(mid);if(tmp >= k)    r = mid;else    l = mid + 1;}printf("%lld\n", l);}return 0;
}

转载于:https://www.cnblogs.com/vongang/archive/2012/11/03/2752326.html

POJ 2773 Happy 2006 (容斥原理)相关推荐

  1. 【疑】poj 2773 Happy 2006 互素问题(★★☆☆☆)

    http://poj.org/problem?id=2773 题意:给定一个正整数,求与其互素的第K个整数. 在这里要说一下什么叫互素:如果两个正整数X和Y的最大公约数为1,那么就说X与Y互素. 这个 ...

  2. POJ - 2773 Happy 2006(欧几里得+构造)

    题目链接:点击查看 题目大意:给出两个数n和k,求与从1开始,与n互质的第k个数是多少 题目分析:这个题目给的k很大,所以不能草率模拟,我们可以稍微构造一下: 因为GCD(a,b)=GCD(b mod ...

  3. POJ 2773 欧几里得

    思路: 若a和b互素的话,则b*t+a和b一定互素 用周期性做就好了 //By SiriusRen #include <cstdio> using namespace std; int s ...

  4. POJ 1091 跳蚤 【容斥原理】+模板

    Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个 ...

  5. php header apk,php常用的header头

    /** * php常用的header头设置... */ header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not Found'); ...

  6. 信息学竞赛中的数学知识 --- 容斥原理

    C++基础数论-----容斥原理 C++基础数论-----容斥原理_C2020lax的博客-CSDN博客_容斥原理c++ C++数论容斥原理----无关的元素 C++数论容斥原理----无关的元素 - ...

  7. ICPC训练联盟2021寒假冬令营(9)_2021.01.29_笔记

    试题链接 点我进入代码提交OJ 学习笔记 - 数论与组合分析入门 数论的编程实验 • 3.1素数运算的实验范例 • 3.2求解不定方程和同余方程的实验范例 • 3.3 特殊的同余式 • 3.4 积性函 ...

  8. POJ - 1091 跳蚤(容斥原理+数论)

    题目链接:点击查看 题目大意:中文题意,不多赘述 题目分析:根据题目的意思,其实只需要让所有数的最大公约数为1就可以满足条件,好像是用到了欧几里得的一些知识,奈何我的数论比较菜,也不会证明,就直接用网 ...

  9. (精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目

    POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: ...

最新文章

  1. 中国SaaS死或生之七:死生非大事,利益最相关
  2. 浏览器跨域访问解决方案
  3. PHP array_pop()函数与示例
  4. android黑屏日志_Android启动页黑屏的解决方案
  5. 为什么中小企业选择 SAP Business One?
  6. 计算机桌面为什么没有语言栏了,电脑语言栏不见了有哪些解决方法
  7. ping可以访问百度ip但不能访问百度域名|couldn't resolve host api.weixin.qq.com
  8. Excel写批量代码(一)
  9. 小米游戏本bios更新_小米游戏本 | 笔记本Air 13.3″ 四核 | 笔记本Air 12.5″ | 笔记本Pro 15.6″BIOS设置...
  10. python label显示图片_Python3 tkinter基础 Label imag显示图片
  11. NVIDIA安装程序失败(组件全部未安装)
  12. word 2013 尾注后继续添加正文的方法
  13. 张亚勤退休百度:一个耐人寻味的微笑
  14. 静态html使用js发送邮件,科技常识:html实现邮箱发送邮件_js发送邮件至指定邮箱功能...
  15. 嵌入式菜单LCD简单版
  16. 计算机柜里 do dl代表什么,dl是什么意思(你知道AI、ML和DL分别代表什么吗?)...
  17. 随时待命的初学者指南
  18. 河南对口计算机本科学校有哪些,河南计算机对口升学有哪些学校
  19. Python-批处理调整音频文件的音量大小
  20. 微信js sdk 授权上传头像下载代码片段和注意事项

热门文章

  1. 齐齐哈尔计算机二级,2020齐齐哈尔市计算机二级报名时间|网上报名入口【8月20日9时开通】...
  2. SVM算法及OpenCV源码分析
  3. java当前时间查询,Java实现查询记录的时间相对于当前时间
  4. python基于水色图像的水质评价_零基础学习Python的学习路线及教程
  5. C语言——指针篇(二)指针和数组之内存分配和初始化
  6. 远程访问服务器并登录LPAR,MySQL设置远程连接服务器
  7. Dediprog EM100Pro-G2 CmdLine教程
  8. 时隔两年,PuTTY 喜提新版
  9. 百度AI城市又搞事情!一天三场签约 上海市民要全面迎来AI了
  10. 从零开始编写自己的C#框架(7)——需求分析