$O(n)$递推求逆元

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int inv[];
int main(){
int n,p;
scanf("%d%d",&n,&p);
inv[]=;
printf("1\n");
for(int i=;i<=n;i++){
inv[i]=(ll)(p-p/i)*inv[p%i]%p;
printf("%d\n",inv[i]);
}
return ;
}

exgcd求逆元

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
void exgcd(int a,int b,int &x,int &y){
if(!b){
x=;
y=;
return;
}
exgcd(b,a%b,x,y);
int tmp=x;
x=y;
y=tmp-a/b*y;
}
int main(){
int a,b;
scanf("%d%d",&a,&b);
int x,y;
exgcd(a,b,x,y);
x=(x%b+b)%b;
printf("%d\n",x);
return ;
}

模数为质数时,用费马小定理求逆元

 #include<cstdio>
typedef long long ll;
const int mod=1e9+;
ll ksm(ll x,ll y){
ll ret=;
while(y){
if(y&) ret=ret*x%mod;
x=x*x%mod;
y>>=;
}
return ret;
}
int main(){
ll a;
scanf("%lld",&a);
printf("%lld",ksm(a,mod-));
return ;
}

$O(n)$求$1!$到$N!$的逆元

$1/i!=(i+1)/(i+1)!$

实现时先求出$f[n]$再反向递推

 f[i]=(ll)(i+)*f[i+]%mod

中国剩余定理

贴一篇别人的:http://www.cnblogs.com/MashiroSky/p/5918158.html

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int N,A[],B[];
void Exgcd(ll a,ll b,ll &x,ll &y){
if(!b){
x=;
y=;
return;
}
Exgcd(b,a%b,x,y);
ll tmp=x;
x=y;
y=tmp-a/b*y;
}
ll Chinese_Remainder_Theorem(){
ll M=;
for(int i=;i<=N;i++) M*=A[i];
ll ret=,x,y;
for(int i=;i<=N;i++){
ll tmp=M/A[i];
Exgcd(tmp,A[i],x,y);
ret=(ret+tmp*x*B[i])%M;
}
return (ret+M)%M;
}
int main(){
return ;
}

Lucas定理

$C(N,M)\% P = C(N\% P,M\% P) * C(N/P,M/P)\% P$

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int N,M,P;
int inv[],fac[];
int C(int x,int y){
if(x<y) return ;
return (ll)fac[x]*inv[fac[y]]%P*inv[fac[x-y]]%P;
}
int Lucas(){
if(N<M) return ;
ll ret=;
while(M){
ret=ret*C(N%P,M%P)%P;
N/=P;
M/=P;
}
return ret;
}
int main(){
int Test;
scanf("%d",&Test);
while(Test--){
scanf("%d%d%d",&N,&M,&P);
swap(N,M);
N+=M;
inv[]=;for(int i=;i<P;i++) inv[i]=(ll)(P-P/i)*inv[P%i]%P;
fac[]=;for(int i=;i<=N;i++) fac[i]=(ll)fac[i-]*i%P;
printf("%d\n",Lucas());
}
return ;
}

高斯消元

最后回代求解的时候,若发现某一项元系数为零,且式子右边常数为零,则有无数多个解,若常数不为零,则无解。

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int inline readint(){
int Num=,Flag=;char ch;
while((ch=getchar())<''||ch>'') if(ch=='-') break;
if(ch=='-') Flag=-; else Num=ch-'';
while((ch=getchar())>=''&&ch<='') Num=Num*+ch-'';
return Num*Flag;
}
int N;
double A[][];
bool Gauss(){
int t;
for(int i=;i<=N;i++){
t=i;
for(int j=i+;j<=N;j++)
if(fabs(A[j][i])>fabs(A[t][i]))
t=j;
if(t!=i)
for(int j=i;j<=N+;j++)
swap(A[t][j],A[i][j]);
for(int j=i+;j<=N;j++){
double r=A[j][i]/A[i][i];
for(int k=i;k<=N+;k++)
A[j][k]-=A[i][k]*r;
}
}
for(int i=N;i>=;i--){
for(int j=i+;j<=N;j++)
A[i][N+]-=A[i][j]*A[j][N+];
if(A[i][i]==&&A[i][N+]==) return false;
A[i][N+]/=A[i][i];
}
return true;
}
int main(){
N=readint();
for(int i=;i<=N;i++)
for(int j=;j<=N+;j++)
A[i][j]=readint();
if(!Gauss()){
puts("No Solution");
return ;
}
for(int i=;i<=N;i++) printf("%.2lf\n",A[i][N+]);
return ;
}

NOIP数学相关模板整理的更多相关文章

  1. Noip数学整理

    目录 Noip数学整理 序 1 取模相关 2 质数相关 3.基本操作 4.方程相关 5.数列相关 6.函数相关 Noip数学整理 序 因为某些原因, Noip对于数学方面的考纲仅停留在比较小的一部分, ...

  2. 数学相关【真·NOIP】

    数论相关 上来就不会的gcd相关.见SCB他威胁我去掉了一个后缀的blog好了:https://blog.csdn.net/suncongbo/article/details/82935140(已经过 ...

  3. [自用]多项式类数学相关(定理&证明&板子)

    写在前面 由于上一篇总结的版面限制,特开此文来记录 \(OI\) 中多项式类数学相关的问题. 该文启发于Miskcoo的博客,甚至一些地方直接引用,在此特别说明:若文章中出现错误,烦请告知. 感谢你的 ...

  4. [总结]多项式类数学相关(定理&证明&板子)

    目录 写在前面 前置技能 多项式相关 多项式的系数表示 多项式的点值表示 复数相关 复数的意义 复数的基本运算 单位根 代码相关 多项式乘法 快速傅里叶变换 DFT IDFT 算法实现 递归实现 迭代 ...

  5. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...

  6. codeforces 687B - Remainders Game 数学相关(互质中国剩余定理)

    题意:给你x%ci=bi(x未知),是否能确定x%k的值(k已知) ——数学相关知识: 首先:我们知道一些事情,对于k,假设有ci%k==0,那么一定能确定x%k的值,比如k=5和ci=20,知道x% ...

  7. 【3D研发笔记】之【数学相关】(一):坐标系

    现在开始学习3D基础相关的知识,本系列的数学相关笔记是基于阅读书籍<3D数学基础:图形与游戏开发>而来,实现代码使用AS3,项目地址是:https://github.com/hammerc ...

  8. 转:基于IOS上MDM技术相关资料整理及汇总

    一.MDM相关知识: MDM (Mobile Device Management ),即移动设备管理.在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入 ...

  9. latch相关视图整理

    latch相关视图整理(原创) V$LATCH V$LATCH视图在选取X$KSLLT记录时,进行了Group By及SUM运算,从而得出了一个汇总信息,保存了自实例启动后各类栓锁的统计信息.常用于当 ...

随机推荐

  1. vmware tools for linux 安装

    Linux VMware Tools安装步骤简易版 Linux VMware Tools安装估计有点困难,我也在网上看了好多版本的Linux安装VMware Tools,方法都一样.但是自己在安装过程 ...

  2. codevs 1143 纪念品分组

    1143 纪念品分组 2007年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解       题目描述 Description ...

  3. ab-如何提交post请求

    ab -n 1 -c 1 -p post.txt http://***********/ 文件post.txt中存放要post的数据

  4. 采用个hook技术对writefile函数进行拦截(2)

    http://www.cnblogs.com/zhxfl/archive/2011/11/03/2233846.html 这个是笔者之前写过的WriteFile HOOK代码 必须补充对这几个函数的H ...

  5. Tautonym Puzzle

    题意: 构造一个长度不超过200,数字不大于100的序列,使得合法子序列的个数恰好为N: 合法子序列是指一个长度为偶数的序列,前一半和后一半相等. 解法: 考虑这种构造方法 假设我们当前有序列为 $x ...

  6. 性能测试之Jmeter学习(四)

    本节主要讲解:如何创建Web测试计划 如何创建一个简单的测试计划,用于测试web站点? 1.明确测试需求:我们会模拟5个并发用户,对Jakarta Web站点的网个页面进行访问,另外每个并发用户都会运 ...

  7. 原生JS操作 table object HTMLTableSectionElement 对象,获取行数

    <tbody id="infoTab"> <tr class="fomat"> <td class="blank&quo ...

  8. SqlServer2012——表

    1.数据类型 数字类型:int,smallint, 高精度:decimal,numeric 日期和时间:datetime,smalldatetime 二进制:binary,varbinary,imag ...

  9. react中虚拟DOM的基本概念

    react中的核心概念 1.DOM的本质是什么: 浏览器中的概念,用js对象来表示页面上的元素,并提供操作DOM对象的API 2.什么事react中的虚拟DOM:是框架中的概念,是程序员用js对象来模 ...

  10. E20180519-hm

    distinct adj. 明显的,清楚的; 卓越的,不寻常的; 有区别的; 确切的;