数论
文章平均质量分 89
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[反序表 DP] 51Nod 1020 逆序排列
反序表那一套理论来自:http://blog.csdn.net/synapse7/article/details/170932451. 先介绍反序表的概念:令bi(1比如说,排列5 9 1 8 2 6 4 7 3有反序表2 3 6 4 0 2 2 1 0(在1左边且大于1的有2个,在2左边且大于2的有3个,……)2. 关键结论:由1知,第1个元素的反原创 2016-11-17 07:30:47 · 783 阅读 · 0 评论 -
[暴力搜索 剪枝 约数和反函数] BZOJ 3629 [JLOI2014]聪明的燕姿
约数和公式:sumd=(1+p1+p1^2+...+p1^a1)*...*(1+p1+p1^2+...+pn^an)我们枚举出所有形如1+pi+pi^2+...+pi^ai 放入hashmap然后对于约数和S分解因数 这里我们采用分解质因数后dfs的方法 时间复杂度是O(约数个数) 不会太大 最多一百多然后对于每个因数 去hashmap里查找对应的质数幂和 有些因数无对应 有些可能有多原创 2016-11-10 18:38:03 · 457 阅读 · 0 评论 -
[斐波那契数列 求解二次剩余&二次模方程 BSGS] COGS 2114 [CodeChef FN]斐波那契数
详见:http://blog.csdn.net/wmdcstdio/article/details/49866829我们可以考虑斐波那契的通项公式 换元可以转化成一个二次方程 根据求根公式求出后 再用BSGS求出指数注意分奇偶考虑#include#include#include#include#include#define cl(x) memset(x,0,sizeo原创 2016-11-06 20:38:26 · 577 阅读 · 0 评论 -
[斐波那契循环节 数学技巧] HDU 3977 Evil teacher
找到了两种做法 不同的关键在于对于一个质数p的循环节的不同求法法一:来自http://blog.csdn.net/prime7/article/details/11017111分析过程:首先我们知道fib数列模p如果出现了连续的1,0就意味这着开始循环了,因为接下来的项就是1 1 2 3 5等等。那么很显然如果在第k位第一次出现了1,0,那么对于以后的1原创 2016-11-04 20:55:55 · 4492 阅读 · 0 评论 -
[斐波那契循环节 搜索] BZOJ 4294 [PA2015]Fibonacci
fib数列关于10^x的循环节为6*10^x关于循环节可以看:http://blog.csdn.net/u014609452/article/details/53039157然后就可以低位到高位dfs#include#include#include#includeusing namespace std;typedef long long ll;inline ll原创 2016-11-04 20:58:14 · 655 阅读 · 0 评论 -
[数学技巧 等比数列] 斐波那契k次幂和
参考:http://blog.csdn.net/acdreamers/article/details/23039571题意:给定和,其中,,求 的值。首先k小的情况可以构造矩阵和向量[fi-1^k,fi-1^(k-1)*fi,fi-1^(k-2)*fi^2,....,fi^k,Sum]#include#include#include#include原创 2016-11-04 21:04:21 · 4927 阅读 · 6 评论 -
[线性筛 质因数分解] 51Nod 1643 小Q的家庭作业
#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef long long ll;const int P=1e9+7;const int N=10000005;int prime[664580],num;int vst[N],d[N];i原创 2016-09-25 16:43:50 · 1013 阅读 · 0 评论 -
[BSGS 矩阵 随机化] BZOJ 4128 Matrix
其实完全不必求逆矩阵判相同用了随机化#include#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==原创 2016-09-02 21:39:32 · 460 阅读 · 0 评论 -
[数论] BZOJ 1406 [AHOI2007]密码箱
n=aba|(x-1) b|(x+1) || a|(x+1) b|(x-1)#include#include#include#includeusing namespace std;typedef set::iterator ITER;set S;int n;int main(){ scanf("%d",&n); if(n==1) return原创 2016-08-28 18:48:43 · 589 阅读 · 0 评论 -
[类欧几里得算法 数论] BZOJ 2187 fraction
应该也是个变形%%%Vani#include#include#include#includeusing namespace std;typedef long long ll;typedef pair abcd;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(原创 2016-08-28 08:00:00 · 987 阅读 · 1 评论 -
[类欧几里得算法 数论] BZOJ 3817 Sum
类欧的变形 #include #include#include#include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=原创 2016-08-28 07:58:28 · 1426 阅读 · 0 评论 -
[数论 CRT] BZOJ 2976 [Poi2002]出圈游戏
CA爷把这道题搬到了BC上,据说因为题目描述有误炸了,于是就来做做就是一同余方程组用中国剩余定理解但是自己的CRT打得好low#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef long long ll;typedef pa原创 2016-04-18 18:27:23 · 597 阅读 · 0 评论