
数学算法
数学算法
谁是凶手1703
这个作者很懒,什么都没留下…
展开
-
逆元
原创 2019-08-16 17:24:28 · 108 阅读 · 0 评论 -
逆元 模板
求逆元 判断是否有逆元#include <stdio.h>using namespace std;typedef long long ll;int a,p,m;int gcd(int a,int b){ if(!b){ return a; } return gcd(b,a%b);}int quick_pow(int a,int...原创 2019-08-16 17:31:05 · 167 阅读 · 0 评论 -
扩展欧几里得及线性同余方程
a*x + b*y = gcd(a,b)a*x + b*y = mx,y 有解的话 m%gcd(a,b)==0x,y 扩大扩展欧几里得#include<bits/stdc++.h>using namespace std;int exgcd(int a,int b,int &x,int &y){ if(!b){ x=1,y=0; ...原创 2019-08-16 18:33:58 · 129 阅读 · 0 评论 -
扩展欧几里得求线性同余方程
https://www.acwing.com/problem/content/880/#include <bits/stdc++.h>using namespace std;int ex_gcd(int a,int b,int &x,int &y){ if (!b) { x=1,y=0; return a; ...原创 2019-08-16 19:56:51 · 148 阅读 · 0 评论 -
快速幂求逆元
a / b ≡ a * x (mod n)两边同乘b可得 a ≡ a * b * x (mod n)即 1 ≡ b * x (mod n)同 b * x ≡ 1 (mod n)由费马定理可知,当n为质数时b ^ (n - 1) ≡ 1 (mod n)拆一个b出来可得 b * b ^ (n - 2) ≡ 1 (mod n)故当n为质数时,b的乘法逆元 x = b ^ (n - 2)...原创 2019-08-25 19:29:14 · 488 阅读 · 0 评论 -
求解线性同余方程
给定n组数据ai,bi,mi,对于每组数求出一个xi,使其满足ai∗xi≡bi(mod mi),如果无解则输出impossible。输入格式第一行包含整数n。接下来n行,每行包含一组数据ai,bi,mi。输出格式输出共n行,每组数据输出一个整数表示一个满足条件的xi,如果无解则输出impossible。每组数据结果占一行,结果可能不唯一,输出任意一个满足条件的结果均可。输出答案必须在...原创 2019-08-25 20:07:32 · 234 阅读 · 0 评论 -
表达整数的奇怪方式【中国剩余定理】
题意:给定2n个整数a1,a2,…,an和m1,m2,…,mn,求一个最小的非负整数x满足∀i∈[1,n],x≡mi(mod ai)。#include<iostream>#include<algorithm>using namespace std;typedef long long ll;int n;ll ffabs(ll x){ if(x&g...原创 2019-08-26 16:41:35 · 237 阅读 · 0 评论 -
spfa+01分数规划【观光奶牛】
spfa+01分数规划思路01分数规划,二分代码#include<iostream>#include<algorithm>#include<string.h>#include<queue>using namespace std;const int N=2e5;int h[N],ne[N],wt[N],e[N],wf[N],i...原创 2020-02-08 16:02:19 · 136 阅读 · 0 评论 -
区间最大公约数【树状数组+线段树】
思路:首先是线段树的做法定义node节点,求公约数,那么定义d(记录区间公约数),还有左节点右节点考虑定义一个数d,能不能维护好update父节点的d = max(左树d,右树d),所有一个数d,够用考虑区间加,可以使用差分数组b[i]=a[i]=a[i-1]考虑区间求最大公约数(a,b,c)=(a,b-a,c-b)//公约数性质b-a,c-a可以看成差分数组a,b,c都加d,...原创 2020-02-14 15:58:52 · 236 阅读 · 0 评论 -
区间最大公约数
title: 区间最大公约数tags:线段树最大公约数categories:数据结构线段树date: 2020-04-13 15:21:56题意:区间加,询问区间最大公约数思路区间加= = 差分序列= =单点修改=pushup询问区间最大公约数,gcd(左区间,右区间)(X,Y,Z)的最大公约数,可以直接求区间最大公约数的一个性质:(X,Y,Z)=(X,...原创 2020-04-13 15:47:42 · 293 阅读 · 0 评论 -
Nastya Studies Informatics(数学)
Nastya Studies Informatics(数学)题意a,b为两个正整数,l<= a,b <=r。x=gcd(a,b),y=lcm(a,b)。思路:如果直接暴力,利用xy=ab 来做的话,肯定会T!现在,我们设 a=nm,b=mz.那么,x=m,y=nmz,ab=nmmz。如果我们来枚举a的所有可能的话,1e9,太大,所以我们考虑枚举n的所有可能!!我们先来确定n的范围,最小为1,n最大值为sqrt(n*z),确定了范围后,就可以开始写了。...原创 2021-03-26 11:19:28 · 94 阅读 · 0 评论 -
数学知识
试除法判断质数#include <iostream>#include <algorithm>using namespace std;bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) return false; return true;}int m原创 2020-08-14 10:23:41 · 165 阅读 · 0 评论 -
C循环【扩展欧几里得】
C循环(扩欧)题意思路那个n为存储,意味着每次膜除2^n,代码#pragma comment(linker, "/STACK:1024000000,1024000000")#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>#include<stack&原创 2020-10-07 11:59:08 · 218 阅读 · 2 评论 -
最大比例【更相减损术】
最大比例题意给出一个等比数列中的几项,求出符合这几项的最大等比值。思路这几项排序、去重之后,按照通项公式写出来,第i个数 :第一个数 = r^k。其中r为一个比例,其gcd(分子,分母)= 1.。那么构成一个新数列,这个数列为:(p/q)k1 , (p/q)k2 ,(p/1)k3…转化为:求这个新数列的最大公约数,因为有指数的形式,采用 更相减损术求这些指数的最大公约数。代码在这里插入代码片...原创 2020-10-07 11:32:57 · 141 阅读 · 0 评论 -
五指山【蓝桥杯】
扩展欧几里得(五指山)题意思路从起点,飞行k1个d,最后到达y:x + k1*d 同余y (在膜n的基础上)得到: x + k1*d = y + k2 *n其中k1,k2未知数,通过扩展欧几里得求出一组解,要求我们求出最小正整数解:其中:k1=k0 + k(n/gcd(n,d))代码#pragma comment(linker, "/STACK:1024000000,1024000000")#include <stdio.h>#include <iostream原创 2020-10-05 17:39:34 · 184 阅读 · 0 评论 -
hannnnah_j’s Biological Test【卢卡斯定理】【组合数】
题意m个人,n个桌位,每个人相距至少k,桌位是一个环,问有多少种方案。答案取模方案每个人至少相距k,把这些位置固定,共mk个座位,剩下n-mk个座位放在m个人里面(并且位置是一个环)先确定好环中第一个位置,那剩下就是n-mk-1个位置,m-1个人把m-1个人放在n-mk-1个位置,答案就是C(n-mk-1,m-1)种方案这是环中一个位置的方案,共n个座位,然后n因为一个环的相对位置,可能重复,例如4个人的坐法:1 2 3 4 、2 3 4 1、3 4 1 2 、4 1 2 3是一样的,原创 2020-09-04 11:09:29 · 180 阅读 · 0 评论 -
均分纸牌问题总结【线形、环形、二维】
线形均分纸牌问题题意有N堆纸牌,编号分别为 1,2,…,N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为 1 的堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N−1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。思路第一堆牌只能给第二堆牌(给正负张都可以)那么第一堆牌的值是不是平均值就决定:是否要对第一堆牌进行操作(第原创 2020-07-04 17:07:50 · 642 阅读 · 0 评论 -
c++四舍五入
原创 2020-03-24 22:37:06 · 149 阅读 · 0 评论 -
约瑟夫环【数学推导方式求解】
f[n] 数组记录从0开始编号,一共有n个人,喊到k 的人 ,杀掉的人编号是f[n]0 1 2 3 4 5 — k-1 k ----n-1. 这是f[n] 的情况杀掉喊k的人= = 编号k-1,把杀掉这个人之后的人重新编号k k+1 k+2 ————n-2。 这是f[n-1]的情况整一个下标变换 f[n]=(f[n-1] + k)%n有的是从1开始编号,那输出结果+...原创 2020-03-20 15:34:32 · 199 阅读 · 0 评论 -
向量积法求多边形面积【hdu 2036】
三角行面积 行列式double area(int ax,int ay,int bx,int by,int cx,int cy){ return 0.5 * ((ax*by) + (bx*cy) + (cx*ay) - (cx*by) - (bx*ay)-(ax*cy)); }任意凸多边行 面积划分三角形任意凹多边形面积右手定则 逆时针考虑 三个点的面积倆条边 逆时针...原创 2020-03-20 13:50:08 · 395 阅读 · 0 评论