博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2773 Happy 2006
阅读量:2441 次
发布时间:2019-05-10

本文共 1227 字,大约阅读时间需要 4 分钟。

Happy 2006
Time Limit: 3000MS   Memory Limit: 65536K
Total Submissions: 9987   Accepted: 3434

Description

Two positive integers are said to be relatively prime to each other if the Great Common Divisor (GCD) is 1. For instance, 1, 3, 5, 7, 9...are all relatively prime to 2006. 
Now your job is easy: for the given integer m, find the K-th element which is relatively prime to m when these elements are sorted in ascending order. 

Input

The input contains multiple test cases. For each test case, it contains two integers m (1 <= m <= 1000000), K (1 <= K <= 100000000).

Output

Output the K-th element in a single line.

Sample Input

2006 12006 22006 3

Sample Output

135

解题思路:二分枚举1-2^64之间的数x,找到1-x与m互质的个数s,这里利用容斥原理,如果s与k相等,那么该x即为结果;

参考代码:

#include 
#include
#include
using namespace std;typedef long long ll;const int MAX = 1000010;int p[MAX],count;void fun(ll n){ ll i; count=0; for (i=2;i*i<=n;i++){ if (n%i==0){ p[count++]=i; while (n%i==0) n/=i; } } if (n>1) p[count++]=n;}ll solve(ll n,ll r){ ll sum=0; for (int i=1;i<(1<
>n>>m){ fun(n); ll r=0xffffffff,l=1; while (r-l>0){ mid=(r+l)/2; num=solve(n,mid); if (num>=m) r=mid; else l=mid+1; } cout<
<

转载地址:http://efbqb.baihongyu.com/

你可能感兴趣的文章
第十三章 sqlplus命令(一)
查看>>
第三章(backup and recovery 笔记)
查看>>
第一章(backup and recovery 笔记)
查看>>
第六章(backup and recovery 笔记)
查看>>
oracle备份功能简述
查看>>
[转]数据库三大范式
查看>>
恢复编录的创建和使用.txt
查看>>
truncate 命令使用
查看>>
[script]P_CHECK_BLACK.sql 检查当前用户下是否有varchar2字段的末尾包含空格
查看>>
实验-数据分布对执行计划的影响.txt
查看>>
实验-闪回数据库
查看>>
实验-闪回表
查看>>
oracle审计
查看>>
日期格式的转换
查看>>
JavaScript:charCodeAt()和codePointAt()的区别
查看>>
JavaScript:Array数组
查看>>
JavaScript:toString()和toLocaleString()的区别
查看>>
jquery 中remove()与detach()的区别
查看>>
Markdown入门1-概述、定义、优点、缺点、应用场景、在线编辑器
查看>>
Markdown入门2-标题、引用、列表、代码、分隔线
查看>>