# POJ 2773 Happy 2006

#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int MAXN = 1000005;
const int inf  = 0x3f3f3f3f;
typedef long long ll;
bool is_prime[MAXN];
ll   prime[MAXN];
ll   factor[110], ans;
int  len, pcnt;
inline ll min(ll a, ll b) {
return a < b ? a : b;
}
inline ll max(ll a, ll b) {
return a > b ? a : b;
}
void Init() {
int i, j;
len = 0;
memset(is_prime, true, sizeof(is_prime));
is_prime[0] = is_prime[1] = false;
prime[len++] = 2;
for(i = 4; i < MAXN; i += 2)
is_prime[i] = false;
for(i = 3; i * i <= MAXN; i += 2) {
if(is_prime[i]) {
prime[len++] = i;
for(j = i * i; j < MAXN; j += i)
is_prime[j] = false;
}
}
for( ; i < MAXN; i += 2)
if(is_prime[i])
prime[len++] = i;
return ;
}
void cal_factor(ll n) {
pcnt = 0;
for(int i = 0; i < len && prime[i] * prime[i] <= n; ++i) {
if(n % prime[i] == 0) {
factor[pcnt++] = prime[i];
while(n % prime[i] == 0)
n /= prime[i];
}
}
if(n > 1) factor[pcnt++] = n;
return ;
}
void dfs(int id, ll cur, int cnt, ll limit) {
if(id == pcnt) {
if(cnt & 1)
ans -= limit / cur;
else
ans += limit / cur;
return ;
}
dfs(id + 1, cur, cnt, limit);
dfs(id + 1, cur * factor[id], cnt + 1, limit);
return ;
}
ll get_num(ll limit) {
ans = 0;
dfs(0, 1, 0, limit);
return ans;
}
ll solve(ll m, ll k) {
ll ret = inf;
cal_factor(m);
int low = 1, high = inf, mid;
while(low <= high) {
mid = (low + high) / 2;
if(get_num(mid) >= k) {
ret = min(ret, mid);
high = mid - 1;
}
else {
low = mid + 1;
}
}
return ret;
}
int main() {
//freopen("aa.in", "r", stdin);
ll m, k;
Init();
while(cin >> m >> k) {
cout << solve(m, k) << endl;
}
return 0;
}

• 本文已收录于以下专栏：

## POJ_2773_Happy 2006_ 欧几里得算法

Happy 2006 Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 10818 Accepted: 3760...
• huangshuai147
• 2016年04月28日 21:28
• 659

## poj-2773-Happy 2006

Description Two positive integers are said to be relatively prime to each other if the Great Common...
• Ypopstar
• 2016年08月02日 15:19
• 192

## POJ 2773-Happy 2006(欧拉函数)

Happy 2006 Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S...
• u013486414
• 2015年04月08日 19:28
• 514

## POJ 2773 Happy 2006

• YYlxid
• 2013年08月23日 17:50
• 632

## poj 2773 Happy 2006

• hncu1106401
• 2013年08月16日 15:45
• 253

## POJ 2773：Happy 2006

Happy 2006 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 10521   Ac...
• u010885899
• 2015年12月05日 18:24
• 160

## POJ 2773 Happy 2006

Happy 2006 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 11832   Ac...
• fsq0827
• 2017年01月23日 15:36
• 101

## POJ 2773 HAPPY 2006

• Beyoursven
• 2014年11月29日 10:31
• 184

## POJ 2773 Happy 2006(容斥原理)

• Yeluorag
• 2015年11月28日 23:19
• 199

## POJ 2773 Happy 2006 [容斥原理]

Happy 2006 容斥原理
• ourfutr2330
• 2016年07月24日 17:30
• 186

举报原因： 您举报文章：POJ 2773 Happy 2006 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)