摘要:
题意:给定n和k,求C(n,k)的所有因子个数。(0 ≤ k ≤ n ≤ 431)思路:显然不能直接求,将C(n,k)化为n!/(k!*(n-k)!),先对431以内进行素数筛选,因为n!的因子个数等于(n-1)!的因子个数加n的因子个数,所以先打表求出阶乘的因子个数,然后就直接求了。题目链接:http://poj.org/problem?id=2992View Code 1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #include <cstring> 5 #incl 阅读全文
摘要:
题意:给定一整数R表示N进制数,求最小的N满足R%(N-1)=0.思路:没注意输入的最大值为32KB,RE一次,如下推倒:设输入的是abcd,假设其解是n进制,因为每一位必然小于n,则有 (a*n*n*n + b*n*n + c*n + d)%(n-1)=0则有:( (a*n*n*n)%(n-1)+ (b*n*n)%(n-1)+ (c*n)%(n-1)+ d )%(n-1)=0则有:( (a* (n%(n-1)) *(n%(n-1)) *(n%(n-1)))+ (b* (n%(n-1)) *(n%(n-1)))+ ... 阅读全文
摘要:
题意:给出正数m(1 <= m <= 1000000),求第K (1 <= K <= 100000000)个与m互质的数。思路:与m互质的数每m的欧拉函数个一循环.如6:1 5,7 11,13 17.....所以求出所有小于m的与m互质的数,然后用k mod m的欧拉函数再乘以相应的倍数。题目链接:http://poj.org/problem?id=2773View Code 1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #include <cstri 阅读全文
摘要:
题意:给定N,求0<=x<=N,0<=y<=N范围内,从点(0,0)到点(x,y)画一条线段,不经过任何点的点的总和.思路:就是求小于等于N的所有欧拉函数之和乘2加1.题目链接:http://poj.org/problem?id=3090View Code 1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #include <cstring> 5 #include <string> 6 #include <algorithm> 阅读全文
摘要:
题意:给定N,求所有小于等于N的a/b,gcd(a,b)=1(a<b).思路:就是求小于等于N的欧拉函数。题目链接:http://poj.org/problem?id=2478View Code 1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #include <cstring> 5 #include <string> 6 #include <algorithm> 7 #include <iostream> 8 using nam 阅读全文
摘要:
题意:给定奇素数N,求N的原根。思路:定理:奇素数N的原根等于φ(N-1),即直接求N-1的欧拉函数。题目链接:http://poj.org/problem?id=1284View Code 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cmath> 4 #include <cstring> 5 #include <string> 6 #include <algorithm> 7 #include <iostream> 8 using namespac 阅读全文
摘要:
题意:给定某两个数GCD和LCM,求相加和最小的这两个数。(GCD和LCM均小雨2^63)。思路:LCM=a*b/GCD,a/GCD*b/GCD*GCD=LCM,a/GCD*b/GCD=LCM/GCD,即先Pollard_rho法对LCM/GCD进行整数分解,然后对其因子进行深搜找出最小的结果。题目链接:http://poj.org/problem?id=2429View Code 1 /*******************Miller_Rabin素数测试&&Pollard_rho整数分解**************************/ 2 #include <c 阅读全文
摘要:
题意:给定一个数N (2 <= N < 254).判断其是否是素数,是输出"Prime",否则输出N的最小质因数。思路:N很大,需要用Miller_Rabin素数测试法和Pollard_rho整数分解法,当模板用了。题目链接:http://poj.org/problem?id=1811View Code 1 /*******************Miller_Rabin素数测试&&Pollard_rho整数分解**************************/ 2 #include <cstdio> 3 #include < 阅读全文
摘要:
题意:给定一个数n(2<=n<=10^14),判断其是否是素数。思路:n很大,所以要用到Miller_Rabin素数测试法,直接用二分幂一直wrong,超long long范围,所以要用到multi()。题目链接:http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1517View Code 1 /*************************Miller_Rabin素数测试(有待改进)*******************************/ 2 #include <cstdio> 3 #include <cm 阅读全文
摘要:
题意:给定一个n (1 <= n <= 10^16),求小于等于n的最大反素数。反素数(对于任何正整数x,起约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数.)。思路:即求小于等于n的约数最多的数,因为一个数的因子数等于它所有素因子幂加1的乘积,要求最大的反素数,则素因子尽可能要少,幂尽可能要多,所以只对前15个素数所能组成的数进行遍历即可。题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=15 阅读全文