![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
The sunshine。
实在是太菜了 记忆力也不太好,,我还是写博客记录一下吧wuwuwuwu
展开
-
容斥原理
题意:给定a1,a2,…am,求从1到n的整数中至少能整除a中一个元素的数有几个?输入:n =100,m=2;a={2,3};输出:67输入:n=100,m=3;a={2,3,7}输出:72思路:容斥原理代码实现:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long lo原创 2021-04-28 17:44:53 · 67 阅读 · 0 评论 -
线段上的格点数(GCD)
题意:给定平面上的两个格点(整数点)p1(x1,y1),p2(x2,y2) 线段p1p2上,除p1和p2以外一共有多少个格点?限制条件:-10^9 <=x1,x1,y1,y1<=10^9输入:p1(1,11) p2(5,3)输出:3思路:辗转相除法,答案就是gcd(abs(x1-x2),abs(y1-y2))-1,为什么可以这样做呢? 仔细想想,求出最大公约数g,也就是把y分为g个部分组成,x也是g个部分组成,这样的话,从起点开始,每次横坐标和纵坐标分别增加相应的一部分,一直增到原创 2021-04-20 22:45:23 · 438 阅读 · 0 评论 -
图中长度为k的路径的计数(矩阵快速幂)
题意:给出一个有向图,其中每条边的边长都为1。求这个图中长度恰为 k 的路径的总数。(1≤n≤100,1≤k≤10^9)思路:代码实现:#include<cstdio>#include<cstring>using namespace std;typedef long long ll;struct matrix{ int r, c; int mat[105][105]; matrix(){ memset(mat, 0, si转载 2021-04-19 22:10:14 · 387 阅读 · 0 评论 -
Matrix Power Series POJ - 3233(矩阵快速幂)
题意:给一个矩阵A,让求A + A^2 + A^3 + A^4 + … + A^nn (n ≤ 30), k (k ≤ 10^9) ,m (m < 10^4)思路:首先,将矩阵转化成递推的,Sn-1 = a^1 + a^2 + a ^ 3 + …+a^n-1;Sn = a^1 + a^2 + a ^ 3 + …+a^n-1 + a^n;=>Sn = a^1 * Sn-1 + a^1大佬的图,,嘤嘤嘤!!!当然这就是一个分块矩阵,分块矩阵的乘法跟普通的差不多哈!!接下来原创 2021-04-19 21:47:05 · 57 阅读 · 0 评论 -
数学_跟质数相关的分组问题
题意:思路:感谢xjc学长的解答,大冬天的,放图片吧!!!太冷了代码实现:#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int,int> pii;const int maxn = 5e6 + 5;int vis[maxn];int p[maxn];int cnt = 0;int maxp[maxn];vector<int>G[maxn原创 2021-01-10 14:00:44 · 99 阅读 · 0 评论 -
疯子坐飞机问题
疯子坐飞机问题(1) 题意:100人坐飞机,每个人按照编号入座,但第一个人在座位中随便选一个坐下,(疯子)第100人正确坐到自己坐位的概率是?他们分别拿到了从1号到100号的座位,这些乘客会按号码顺序登机并应当对号入座如果他们发现对应号座位被别人坐了,就会在剩下空的座位随便挑一个坐.现在假设1号乘客疯了(其他人没疯),他会在100个座位中随便选一个座位坐下,问:第100人正确坐到自己坐位的概率是多少?(也可推广到n名乘客n个座位的情况)(2) 思路:设 P(n) 为第n个人坐在正确位置上的概率原创 2021-01-10 13:14:26 · 492 阅读 · 2 评论 -
数学_大数质因数分解定理
题意:给一个很大的数c,问是否存在a和b,使得a + b = c且rad(abc) < c;注:rad(abc)等于abc相乘结果的质因数的乘积思路:要满足a + b = c,首先c可以表示成c = A * B * C * D…打表可以看出原创 2021-01-10 11:49:59 · 1729 阅读 · 1 评论 -
数学_几何+中位数
题意:给n个点,这n个点在圆上的位置用度数a[i]表示,现在,可以移动这n个点,使得这n个点能够n等分圆,问最少需要移动的距离?输入:n以及n个点的度数输出:需要移动的最小距离示例1输入20.00000 0.00000输出3.1415926536示例2输入30.00000 120.00000 240.00000输出0.0000000000思路:先对a进行排序,使角度成逆时针分布。假设我们以“β角”作为极轴对圆进行切割,则每条切割线对应的角度为:β β+360/n β原创 2021-01-08 13:18:53 · 400 阅读 · 0 评论 -
数学_期望
题意:给一个n,我们可以从1,2,3…,n里面每次拿两个数x 和 y,如果gcd(x,y) == 1,那么我们得到的分数就加1,然后把x和y从序列里面删除,如此往复,直到剩下的数的个数小于2为止。求能得到的分数的期望是多少?输入:一个n输出:p / q(gcd(p,q) == 1)输入2输出1/1输入4输出5/3思路:**很明显的概率方面的知识。。。但是我不是很懂qaq **代码实现:#include<bits/stdc++.h>using namespace s原创 2021-01-06 20:08:39 · 76 阅读 · 0 评论 -
数学_高斯消元+异或方程组
题意:给一个n * n的矩阵A 和 B,求有多少个矩阵C能使A x C = B ⊙ C???输入描述:输入n和01矩阵A和01矩阵B1 <= n <=200输出描述:Output the answer module 998244353输入20 11 11 00 1输出2思路:对于矩阵C的每一列考虑,其实就是异或方程组的高斯消元但是在赛场上高斯消元我不会啊…代码实现:#include<bits/stdc++.h>using namespace s原创 2021-01-05 09:44:08 · 215 阅读 · 0 评论 -
数学_反素数问题
题意:1060 最复杂的数把一个数的约数个数定义为该数的复杂程度,给出一个n,求1-n中复杂程度最高的那个数。例如:12的约数为:1 2 3 4 6 12,共6个数,所以12的复杂程度是6。如果有多个数复杂度相等,输出最小的。输入第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 100)第2 - T + 1行:T个数,表示需要计算的n。(1 <= n <= 10^18)输出共T行,每行2个数用空格分开,第1个数是答案,第2个数是约数的数量。输入原创 2020-12-09 18:19:45 · 88 阅读 · 0 评论 -
数学_欧拉函数和GCD的问题
题意:1262 扔球在圆上一点S,扔出一个球,这个球经过N次反弹还有可能回到S点。N = 4时,有4种扔法,如图:恰好经过4次反弹回到起点S(从S到T1,以及反向,共4种)。给出一个数N,求有多少种不同的扔法,使得球恰好经过N次反弹,回到原点,并且在第N次反弹之前,球从未经过S点。输入输入一个数N(1 <= N <= 10^9)。输出输出方案数量。数据范围12% 2 <= N <= 3020% 2 <= N <= 100040% 2 <=原创 2020-12-09 12:42:23 · 95 阅读 · 0 评论 -
数学_组合数学+Lucas定理+卡特兰数
题意:N * N的方格,从左上到右下画一条线。一个机器人从左上走到右下,只能向右或向下走。并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10007的结果。思路:卡特兰数 + Lucas定理代码实现:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#原创 2020-12-06 17:53:58 · 123 阅读 · 0 评论