題目要求和m互質的第k大。
那麼二分區間,統計區間內和m互質的數個數,所有個數為k結果最小的就是答案。
k比較大最初二分的右端點開大點。
#include #include #include #include #include #include using namespace std;
#define maxn 1111111
#define count count
long long m, k;
bool is_prime[maxn];
long long prime[maxn], cnt;
long long fenjie[55], pr_cnt;
void get_prime ()
}}void work (long long num)
}if (num > 1)
fenjie[++pr_cnt] = num;
}int count (int num, long long &mul)
}return ans;
}long long solve (long long max)
if (solve (l) == k) printf ("%lld\n", l);
else printf ("%lld\n", r);
}return 0;
}
POJ 2773 二分 容斥原理
給m k 求與m互質的第k個數 1 m 1000000 k 1 k 100000000 k比較大,對於乙個數n,1到n以內和m互質的數可以通過容斥原理很快算出來,並且隨n遞增 因此二分k就好了 include include include include include includeusing ...
poj2773 容斥原理
這個題的意思是給你兩個數m,k,讓你求出與m互質的第k個數,設想對於乙個數r,我們可以求出小於等於r與m互質的數的個數,那麼我們就可以使用二分很快的求解。假設我們把m唯一分解 m p1 a1 p2 a2 pi ai,那麼小於等於r與m互質的數中不應該有p1 p2 pi這些因子,因此問題轉化成求解小於...
HDU3388 二分 容斥原理
題目 coprime 題意 給三個數m,n,k,0 思路 二分 容斥原理 由於所找的數與m,n互質,那麼這個數不能含有m,n所包含的素因子。但是k很大,不可能乙個乙個生成。於是二分,找到最小 的x,使得小於或等於x的數中滿足條件的 數的個數大於或等於k,則這個最小值即為答案。在判斷小於或等於x的數中...