数论
dy0607
Keep on coding
展开
-
POJ 3904 容斥原理
题意:给n个数,求它们能够组成的四元组(a, b, c, d)的个数,其中gcd(a, b, c, d) = 1。思路:容斥原理求出不满足要求的四元组个数, 比如若这n个数只有2,3,5三种质因数,设P[i]为n个数中有约数为i的数的个数,则不满足的个数为: C(P[2], 4) + C(P[3], 4) + C(P[5], 4) - C(P原创 2016-09-26 19:48:17 · 307 阅读 · 0 评论 -
POJ 1845 质因数分解+等比数列求和
题意:给出A,B,求A^B的所有约数之和思路:首先给A分解质因数,若A = C1 ^ e1 * ... * Cn ^ en,则A ^ B = C1 ^ (e1 * B) * ... * Cn ^ (en * B), 容易知道,其所有约数之和为: Ans = [C1 ^ 0 + C1 ^ 1 + ... + C1 ^ (e1 * B)] * [C2原创 2016-09-25 21:43:05 · 500 阅读 · 3 评论 -
POJ1811 PrimeTest Miller-Robin+Pollard-Rho
题意:T个数,若为素数则输出Prime,否则输出其最小的质因子。 思路: (1)素数判定(Miller-Robin): 根据费马小定理,有: a ^ (p - 1) % p = 1; 其中p为素数,0 < a < p。 于是我们随机生成a,验证p是否满足条件即可,为了尽量减少错误概率,可以生成多个不同的a。 (2)质因数分解(Pollard-Rh原创 2016-09-15 16:05:11 · 359 阅读 · 0 评论 -
反素数 TIMUS 1748
题意:给出n,求1—n中因子最多的数的最小值,即反素数思路:根据反素数分解质因数后,质因子越小,其对应指数越大的性质,直接DFS即可#include #include #include #include #define For(i,j,k) for(int i = j;i <= k;i ++)using namespace std;const int P[20] = {2,原创 2016-09-05 21:08:31 · 267 阅读 · 0 评论