$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. BZOJ_2438_[中山市选2011]杀人游戏 _强连通分量

    BZOJ_2438_[中山市选2011]杀人游戏 _强连通分量 Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手.警察能够对每一个人 ...

  2. 一个表格中选定的tr,显示在另一个表格中

    一.先获得表格A每点中行的下标index(); 二.申明一个数组,把下表全部push到数组中: 三.在用for循环遍历数组,同时申明html代码片段: 四.用html+=表格A tr:eq(arr[i ...

  3. 怎样安装CentOS 6.6之三:磁盘分区的划分和修改

    安装 CentOS(或Linux)系统,最难的就是磁盘分区.磁盘分区需要根据自己的实际使用需要来规划,以达到最优的效果. 工具/原料   CentOS 6.6 安装包 VMware 虚拟机 一.划分方 ...

  4. Oracle数据库当前连接数、最大连接数的查询与设置

    在开发过程中Oracle数据库有时候连得上,有时候又连不上,提示如下异常“ORA-12519: TNS:no appropriate service handler found 解决”,可能是数据库上 ...

  5. Linux下的RTC子系统

    转自:http://blog.csdn.net/weiqing1981127/article/details/8484268 实时时钟的作用主要是为操作系统提供一个可靠的时间,并在断电下,RTC时钟也 ...

  6. libvirt kvm云主机监控

    libvirt

  7. You Are the One

    题意: 有n个人排队,第i个入场的人x的不愉快度是$D_x*(i-1)$,现在给你n个人在队伍中的位置, 你可以用一个栈让一个人后面的人先进入,问最小的不愉快度是多少. 解法: 考虑注意到用栈调整次序 ...

  8. 爬虫库之BeautifulSoup学习(三)

    遍历文档树: 1.查找子节点 .contents tag的.content属性可以将tag的子节点以列表的方式输出. print soup.body.contents print type(soup. ...

  9. c++拷贝函数详解(转)

    一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如 int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变 ...

  10. python之文件的读写(2)

    小R昨天因为在研究weblogic的漏洞就没来得及学习python(好吧,这都是借口,懒了,大家可不能像我这样.要坚持每天都学).   这个进度是有点慢呀.哎呀,没事没事,我还年轻,才20岁.  哈哈 ...