随笔分类 -  数论---------------------

摘要:1.求单个数(n)的关于模数(p)的逆元: (1)扩展欧几里得算法 满足条件:n与p互质 推导过程:(a*x)%p==(a/b)%p -->x%p==1/b-1/(b*p)*p -->x*b%p==1-1/p*p -->x*b+1/p*p==1 由于b与p互质,所以gcd(b,p)==1,因此用扩展 阅读全文
posted @ 2017-11-08 21:56 Child-Single 阅读(485) 评论(0) 推荐(0)
摘要:题目链接 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 n 第二至 n+1行,每行 n+1 个整数,为a1, a2 .....an​ 和 b,代表一组方程。 输出格式: 共n行,每行一个数,第 i行为 xi​ (保留2位小数) 如果不存在唯一解,在第一行输出" 阅读全文
posted @ 2017-11-08 20:24 Child-Single 阅读(241) 评论(0) 推荐(0)
摘要:先对原式子进行一个变形: 1/n!=1/x+1/y=(x+y)/xy >n!*(x+y)=xy xy-(x+y)*n!=0 >xy-(x+y)*n!+n!2=n!2 >(x-n!)*(y-n!)=n!2 那么如果我们能够求出n!2的约数个数,对于每个约数加上n!即可作为x或y。 若n!=a1p1+a 阅读全文
posted @ 2017-10-27 06:52 Child-Single 阅读(1462) 评论(0) 推荐(0)
摘要:Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目。至于进行接力跑的地点 自然是在牧场中现有的T(2 <= T <= 100)条跑道上。 农场上的跑道有一些交汇点,每条跑道都连结了两个不同的交汇点 I1_i和I2_i(1 <= I1_i 阅读全文
posted @ 2017-10-20 06:55 Child-Single 阅读(192) 评论(0) 推荐(0)
摘要:题目链接 题目大意:给定n个最大公约数为1的整数,两个人轮流进行操作,每次操作可以选一个大于1的数使其减1,然后所有的数再除以当前的最大公约数(如3 6 10对10操作后得到1 2 3),当其中一个人无法操作时,输掉比赛,求获胜的是先手还是后手。先手输出First,后手输出Second。 分析: 我 阅读全文
posted @ 2017-09-27 08:13 Child-Single 阅读(489) 评论(0) 推荐(0)
摘要:题目链接 题目大意: 人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。然后再给出一个起始日期,要求从这一天 阅读全文
posted @ 2017-08-28 19:58 Child-Single 阅读(279) 评论(0) 推荐(0)
摘要:题目链接 题目大意是说要求一个最小正整数x使得ax%b=1。那么这个形式很容易联想到的就是乘法逆元,因为1%b=a/a%b=1,所以x就是a关于b的最小正整数逆元,用扩欧求一下就可以了。 注意求出来的x不一定是最小正整数答案,还要进行一步(x%b+b)%b的操作。 代码: 1 #include<cs 阅读全文
posted @ 2017-08-28 19:00 Child-Single 阅读(290) 评论(0) 推荐(0)
摘要:题目链接 题目的大意就是要求把一个数划分为m(1<=m<=n)个数相加之和的方案数(答案取模1e9+7)。 容易想到答案就是sum(C(n-1,i)(0<=i<=n-1)),也就是2^(n-1)(组合数第n行的所有数的和为2^(n-1))。 既然答案是2n-1,第一反应应该是快速幂取模。很可惜,这里 阅读全文
posted @ 2017-08-28 18:38 Child-Single 阅读(288) 评论(0) 推荐(0)
摘要:最大公因数(gcd): 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int lca(int x,int y) 6 { 7 if(y==0)return x; 8 retur 阅读全文
posted @ 2017-08-28 13:33 Child-Single 阅读(250) 评论(0) 推荐(0)
摘要:题目链接 题目的大意是求在n棵树上采摘不超过m颗豆子的方案数,要求答案对给定的p取模,同时保证p为质数。 奉上大神关于这道题的公式的推导及变形:戳这里 最后就是求C(n+m,m)%p啦~ 这里因为p<=1e5,而n和m又很大,所以应该要用到Lucas定理: Lucas(n,m,p)=C(n%p,m% 阅读全文
posted @ 2017-08-28 13:17 Child-Single 阅读(187) 评论(0) 推荐(0)
摘要:快速幂取模的模板,要注意所有变量都要开成long long类型的防溢出: #include<cstdio> #include<algorithm> #include<cstring> typedef long long LL; const LL mod=1e9+7; using namespace 阅读全文
posted @ 2017-08-21 13:43 Child-Single 阅读(190) 评论(0) 推荐(0)
摘要:时间复杂度为O(n)的线性筛函数: #include<cstdio> #include<algorithm> #include<cstring> const int maxn=1e5+5; using namespace std; bool prime[maxn]; int primes[maxn] 阅读全文
posted @ 2017-08-21 13:33 Child-Single 阅读(234) 评论(0) 推荐(0)
摘要:扩展欧几里得的模板题,要记住: x=y1; y=x1-a/b*y1。 这道题的推导过程如下: 1.因为A/B==0,所以令A/B=x,即A=Bx。又因为n=A%m,所以m*y+n=A。 由上面可推导出Bx-my=n。 2.由扩展欧几里得算法可以算出B*x1+m*y1=1的根,等式两边同时乘上n可以变 阅读全文
posted @ 2017-07-15 10:05 Child-Single 阅读(307) 评论(0) 推荐(0)
摘要:其实这道题本质上也是取石子问题,那么我们还是可以用博弈论来解决。 首先还是特判,若(n>=m)直接输出从n到m的所有整数即可。 然后作进一步分析,可以看到如果目前的竞价是m-(n+1),也就是说离m还有n+1的距离,那么此时轮到竞拍的人必输,所以要尽量给对手这样的点。 同样的,当i*(n+1)<m< 阅读全文
posted @ 2017-06-06 23:11 Child-Single 阅读(147) 评论(0) 推荐(0)
摘要:这道题就是noi.openjudge.cn上的取石子问题,之前是用搜索写的,但今天发现用博弈论的思路来写会简单非常非常多! 首先,如果m>=n,那么第一个人必胜。 那么如果现在剩下m+1个石子,那么接下来那个人无论取1到m中任意一个数字的石子数,都无法取完石子并会剩下1-m个石子,这样的话下一个人一 阅读全文
posted @ 2017-06-06 22:49 Child-Single 阅读(233) 评论(0) 推荐(0)