随笔分类 -  算法竞赛-数论

摘要:题目大意:给出p,q,r,s,求组合数C(p,q)/C(r,s) 题目思路: 化简得到:原式等价于(p!(r-s)!s!) / (r!(p-q)!q!) 由算数基本定理可知任意一个正整数可被唯一分解为素数幂乘积的形式,将分子分母分解后,进行约分即可。 为了避免计算过程数据移除,我们每计算分子的一项因 阅读全文
posted @ 2019-05-03 12:22 声声醉如兰 阅读(212) 评论(0) 推荐(0)
摘要:题目大意: 对于 f[i] = (f[i-1]*a + b) mod 10001,已知f[1],f[3]……f[n*2-1],求f[2],f[4]……f[n*2] 题目思路: 很明显,我们需要计算a,b的值。很容易得到:(a+1)*b + 10001*(-k) = f[3]-a*a*f[1] 利用扩 阅读全文
posted @ 2019-05-02 19:34 声声醉如兰 阅读(196) 评论(0) 推荐(0)
摘要:正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数。 1/6= 0.1(6) 循环节长度为1 1/7= 0.(142857) 循环节长度为6 1/9= 0.(1) 循环节长度为1 阅读全文
posted @ 2018-05-07 18:18 声声醉如兰 阅读(311) 评论(0) 推荐(0)
摘要:a[] = {1,2,3,4...n} n与a[i]的最大公约数,必定属于n的因子,所以遍历n的因子。 对于n的一个因子k,我们求出k作为最大公约数出现的次数m 如何求出m呢: gcd(n,a[i])==k => gcd(n/k,a[i]/k)==1 这相当与求:小于n/k,且与n/k互质的数的个数 阅读全文
posted @ 2018-02-03 16:34 声声醉如兰 阅读(280) 评论(0) 推荐(0)
摘要:Fib[0]=0,Fib[1]=1,Fib[n]=Fib[n-1]+Fib[n-2] if n>1. 定义索函数Sor(n)=Fib[0]| Fib[1] |Fib[2]|…|Fib[n]. 给定整数n,要求计算Sor(n)%1,000,000,007(1e9+7). Input Output In 阅读全文
posted @ 2017-12-09 21:29 声声醉如兰 阅读(302) 评论(0) 推荐(0)
摘要:题意:给出求L,R 之间的数的K次方的因子数之和 思路:打表求出1~10^6之间的素数,枚举[L,R]之间素数的倍数,然后按算数基本定理求出因子个数和。处理过后[L,R]之间的数要么是1,要么是一个素数,再次根据算数基本定理计算因子个数和。 #include<bits/stdc++.h> #defi 阅读全文
posted @ 2017-08-05 00:44 声声醉如兰 阅读(123) 评论(0) 推荐(0)
摘要:对于方程 ax+by=c(x,y为整数),当且仅当 c%gcd(a,b)==0 时,(x,y)有解(见证明3),且有gcd(a,b)组解。 求出方程的一个解x,方程的最小正整数解x0 = (x%(b/gcd(a,b) ) + b/gcd(a,b)) % b/gcd(a,b) (见证明4) 那么 ex 阅读全文
posted @ 2017-07-26 18:26 声声醉如兰 阅读(294) 评论(0) 推荐(3)
摘要:约瑟夫环问题描述:一圈共有N个人,开始报数,报到k的人自杀,然后重新开始报数,问最后自杀的人是谁? 思路: 1.直接暴力模拟,没什么好说的,简单暴力。但是时间复杂度为O(n*m),太过浪费时间。 2.动态规划,把问题重新描述一下:N个人(编号0~(N-1)),从0开始报数,报到(k-1)的自杀,剩下 阅读全文
posted @ 2017-04-14 17:06 声声醉如兰 阅读(706) 评论(0) 推荐(0)
摘要:拓展欧几里得,求出符合条件的最小整数解 #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> #include <math.h> #define LL l 阅读全文
posted @ 2017-03-06 20:31 声声醉如兰 阅读(145) 评论(0) 推荐(0)
摘要:拓展欧几里得:求直线ax+by+c=0上有多少个整数点(x,y)满足x1<x<x2,y1<y<y2. exgcd代码 通过exgcd求出一直特解(x0,y0) 则任意整数解都可以写成(x0+kb',y0-ka')k取任意整数 若c不是gcd(a,b)的整倍数时无整数解 阅读全文
posted @ 2017-03-06 20:29 声声醉如兰 阅读(181) 评论(0) 推荐(0)
摘要:题目大意:优化以下程序 G=0;for(i=1;i<N;i++)for(j=i+1;j<=N;j++){G+=gcd(i,j);} return G 题目思路: 1.建立递推关系,s(n)=s(n-1)+gcd(1,n)+gcd(2,n)+……+gcd(n-1,n); 2.设f(n)=gcd(1,n 阅读全文
posted @ 2017-02-23 20:40 声声醉如兰 阅读(137) 评论(0) 推荐(0)
摘要:题目大意:对下列代码进行优化 long long H( int n ) { long long res = 0; for( int i = 1; i <= n; i++ ) res = res + n / i; return res;} 题目思路:为了避免超时,要想办法进行优化 以9为例: 9/1 阅读全文
posted @ 2017-02-21 21:08 声声醉如兰 阅读(142) 评论(0) 推荐(0)
摘要:Sn=a1*(1-q^n)/(1-q),枚举q的值,判断a1是否为整数,比较暴力 阅读全文
posted @ 2016-10-02 14:20 声声醉如兰 阅读(330) 评论(0) 推荐(0)
摘要:水 阅读全文
posted @ 2016-10-02 14:13 声声醉如兰 阅读(348) 评论(0) 推荐(0)
摘要:题目描述 给你两个数 n, p(0 < n,p <= 10^15); a1 = 1; a2 = 1+2; a3 = 1+2+3; ... an = 1+2+3+...+n Sn = a1+a2+a3+...+an; 求(6*Sn) % p; 给你两个数 n, p(0 < n,p <= 10^15); 阅读全文
posted @ 2016-09-28 10:32 声声醉如兰 阅读(369) 评论(0) 推荐(0)
摘要:素数打表 阅读全文
posted @ 2016-09-26 13:16 声声醉如兰 阅读(140) 评论(0) 推荐(0)
摘要:后三位数直接用快速幂取模就行了,前三位则有些小技巧 阅读全文
posted @ 2016-09-21 19:41 声声醉如兰 阅读(177) 评论(0) 推荐(0)
摘要:题目大意:f(n)为n的因子和,给出 n 求 1~n 中f(n)为偶数的个数. 题目思路:算数基本定理: n=p1^e1*p2^e1 …… pn^en (p为素数); f(n)=(1+p1+p1^2+p^3……+p^e1)*(1+p2+p2^2……+p2^e2)……*(1+pn+pn^2……+pn^ 阅读全文
posted @ 2016-09-20 17:08 声声醉如兰 阅读(178) 评论(0) 推荐(0)
摘要:因为第n项与第n-2项有关,所以知道了f[1]与f[2]的值可以分奇偶打下表,找到循环节为4018。 阅读全文
posted @ 2016-08-21 00:03 声声醉如兰 阅读(118) 评论(0) 推荐(0)
摘要:算数基本定理 阅读全文
posted @ 2016-08-19 22:08 声声醉如兰 阅读(901) 评论(0) 推荐(2)