$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. 「LuoguP1430」 序列取数(区间dp

    题目描述 给定一个长为n的整数序列(n<=1000),由A和B轮流取数(A先取).每个人可从序列的左端或右端取若干个数(至少一个),但不能两端都取.所有数都被取走后,两人分别统计所取数的和作为各 ...

  2. POJ3211(trie+01背包)

    Washing Clothes Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 9384   Accepted: 2997 ...

  3. ASP.NET:Global.asax

    ylbtech-.Net-ASP.NET:Global.asax 1.返回顶部 1. 一.定义:Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 A ...

  4. Java--常识

    一:J2SE/J2ME/J2EE Java2平台包括:标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本.J2SE,J2ME和J2EE,这也就是SunONE(Open NetEnvir ...

  5. 【221】◀▶ IDL GUI 函数说明

    参考:GUI - Dialogs Routines参考:GUI - Widgets Routines参考:GUI - Compound Widgets Routines 01   DIALOG_MES ...

  6. asp.net mvc5 使用百度ueditor 本编辑器完整示例(下)

    一.百度ueditor 本编辑器 一个最大的优点是快速导入word文档的内容,特别 是导入word文档的图文混排效果. 操作步骤: 1.先打开word文档,Crtl +C复制 ,Ctrl+V粘贴到Ue ...

  7. 第一节:Java 语言基础

    5分30开始 18分正式开始议题 23分01开始创建项目: 讲个面向过程,函数式的方式 byte(8) char(16) short(16) int(32) long(64) long类型或者doub ...

  8. qq开放平台可以应用到网页游戏的api整理

    创建角色界面api整理 一.需求描述 1.  创建角色名称可以用qq空间昵称代替 2.  如果玩家是在新区玩的话,赠送老玩家支持礼包 3.  可以看到,好友xxx也在玩,而且到了多少等级,如果加为好友 ...

  9. HDU - 1241 POJ - 1562 Oil Deposits DFS FloodFill漫水填充法求连通块问题

    Oil Deposits The GeoSurvComp geologic survey company is responsible for detecting underground oil de ...

  10. C++泛型编程之函数模板

    泛型语义 泛型(Generic Programming),即是指具有在多种数据类型上皆可操作的含意.泛型编程的代表作品 STL 是一种高效.泛型.可交互操作的软件组件. 泛型编程最初诞生于 C++中, ...