随笔分类 -  数学

摘要:题目链接 题目大意:给你一个n,m(1<=n,m<=1e9),求__gcd(F[n],F[m])%1e8. 首先我在这里提出一个数论定理:__gcd(F[n],F[m])=F[__gcd(n,m)]。 其实在知道这个数论定理后这题就变得非常容易了,只需要求出n,m的最大公约数,然后利用矩阵加速求F[ 阅读全文
posted @ 2019-12-18 15:01 Mmasker 阅读(220) 评论(0) 推荐(0)
摘要:题目链接 HDU 6560 题解思路: 首先,我们根据题目给的条件能归结出几个不等式: (1) k <= j < i ; (2) k >= i - rad[i] + 1 >=1; (3) k >= j - rad[j] + 1 >=1; (4) i <= j + rad[j] -1 ; (5) j 阅读全文
posted @ 2019-09-11 18:02 Mmasker 阅读(217) 评论(0) 推荐(0)
摘要:#include<bits/stdc++.h> using namespace std; #define maxn 100005 #define ll long long typedef pair<int,int> PII; const int mod = 998244353; const int 阅读全文
posted @ 2019-09-09 11:30 Mmasker 阅读(151) 评论(0) 推荐(0)
摘要:题目大意:给你一个质数P,要你求出P的上一个质数Q,求Q! % P的值。 题解思路:根据威尔逊定理可知如果P是一个素数,那么( P - 1 )! ≡ -1 % P,然后我们就可以将我们要求的式子进行转化,( P - 1 )! = Q! * ( Q+1 )( Q+2 ) * … * ( P-1 ),所 阅读全文
posted @ 2019-08-07 15:15 Mmasker 阅读(131) 评论(0) 推荐(0)
摘要:1.线性素数筛 int prime[MAXN],vis[MAXN]; int cnt; void init(){ for(int i=2;i<MAXN;i++){ if(!vis[i])prime[++cnt]=i; for(int j=1;j<=cnt;j++){ if(i*prime[j]>=M 阅读全文
posted @ 2019-07-23 12:56 Mmasker 阅读(170) 评论(0) 推荐(0)
摘要:#include<bits/stdc++.h> using namespace std; #define maxn 300005 #define ll long long const int mod = 1e9+7; const int modd = 1e9+6; //欧拉降幂 ll n,f1,f2 阅读全文
posted @ 2019-06-14 21:51 Mmasker 阅读(133) 评论(0) 推荐(0)
摘要:洛谷 P3390 #include<bits/stdc++.h> using namespace std; #define maxn 300005 #define ll long long const int mod = 1e9+7; int n; ll k; struct Mat{ ll m[10 阅读全文
posted @ 2019-06-13 15:46 Mmasker 阅读(106) 评论(0) 推荐(0)
摘要:这题是一道不容易写的数学题,并且题目只给了1s,就是说O(n)的算法都会T(我T了无数发),这时我们就要从别的方向考虑了。 我们发现a,b,c,d都是在1e9范围内的,就是说如果我们把a和c看成x ^ k1和x ^ k2,那么k1,k2<=32,这下子我们的运算量一下就小下来了。 题目要求的是a ^ 阅读全文
posted @ 2019-05-31 20:05 Mmasker 阅读(107) 评论(0) 推荐(0)
摘要:大多数的编程问题都离不开数学问题,而排列组合作为数学的一重要分支,自然也会被列入编程学科里来。 下面给出一道简单例题: 众所周知,不定方程的解有0个或者若干个。 给出方程: 想知道这个不定方程的正整数解和非负整数解各有几个。 (链接:https://ac.nowcoder.com/acm/conte 阅读全文
posted @ 2019-04-07 16:42 Mmasker 阅读(291) 评论(0) 推荐(0)