NOIP数学相关模板整理
$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数学相关模板整理的更多相关文章
- Noip数学整理
目录 Noip数学整理 序 1 取模相关 2 质数相关 3.基本操作 4.方程相关 5.数列相关 6.函数相关 Noip数学整理 序 因为某些原因, Noip对于数学方面的考纲仅停留在比较小的一部分, ...
- 数学相关【真·NOIP】
数论相关 上来就不会的gcd相关.见SCB他威胁我去掉了一个后缀的blog好了:https://blog.csdn.net/suncongbo/article/details/82935140(已经过 ...
- [自用]多项式类数学相关(定理&证明&板子)
写在前面 由于上一篇总结的版面限制,特开此文来记录 \(OI\) 中多项式类数学相关的问题. 该文启发于Miskcoo的博客,甚至一些地方直接引用,在此特别说明:若文章中出现错误,烦请告知. 感谢你的 ...
- [总结]多项式类数学相关(定理&证明&板子)
目录 写在前面 前置技能 多项式相关 多项式的系数表示 多项式的点值表示 复数相关 复数的意义 复数的基本运算 单位根 代码相关 多项式乘法 快速傅里叶变换 DFT IDFT 算法实现 递归实现 迭代 ...
- BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js
BAT 前端开发面经 —— 吐血总结 目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...
- codeforces 687B - Remainders Game 数学相关(互质中国剩余定理)
题意:给你x%ci=bi(x未知),是否能确定x%k的值(k已知) ——数学相关知识: 首先:我们知道一些事情,对于k,假设有ci%k==0,那么一定能确定x%k的值,比如k=5和ci=20,知道x% ...
- 【3D研发笔记】之【数学相关】(一):坐标系
现在开始学习3D基础相关的知识,本系列的数学相关笔记是基于阅读书籍<3D数学基础:图形与游戏开发>而来,实现代码使用AS3,项目地址是:https://github.com/hammerc ...
- 转:基于IOS上MDM技术相关资料整理及汇总
一.MDM相关知识: MDM (Mobile Device Management ),即移动设备管理.在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入 ...
- latch相关视图整理
latch相关视图整理(原创) V$LATCH V$LATCH视图在选取X$KSLLT记录时,进行了Group By及SUM运算,从而得出了一个汇总信息,保存了自实例启动后各类栓锁的统计信息.常用于当 ...
随机推荐
- MTCNN人脸检测识别笔记
论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 论文链接:https:// ...
- bzoj4259
fft 搞一个生成函数 对于每位A(j)=Σi=1->m (a[i]-b[i+j])^2*a[i]*b[i+j] 如果A(j)=0说明这位匹配 如果这位是*那么a[i]=0否则等于字母-'a'+ ...
- jquery : eval() 解析json的注意
jquery eval解析JSON中的注意点介绍 来在:http://www.jb51.net/article/40842.htm 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: ...
- XML DOM 笔记
一.概念理解: 关于Element跟Node的区别,cilldren跟childNodes的区别很多朋友弄不清楚,本文试图让大家明白这几个概念之间的区别. Node(节点)是DOM层次结构中的任何类型 ...
- Linux which 查找命令
在学习 兄弟连 linux教学视频 的时候,我将所学的 linux 命令记录在我的博客中,方便自己查阅. 权限管理命令: which 基础的命令 命令名称:which 命令的所在路径:/usr/bin ...
- 洛谷 - P2158 - 仪仗队 - 欧拉函数
https://www.luogu.org/problemnew/show/P2158 好像以前有个妹子收割铲也是欧拉函数. 因为格点直线上的点,dx与dy的gcd相同,画个图就觉得是欧拉函数.但是要 ...
- 一张图入门git系列
github地址:https://github.com/521xueweihan/git-tips
- HDU5918【KMP大法好,虽然我不会】
#include <bits/stdc++.h> using namespace std; typedef long long LL; const; int n,m; int a[MAX] ...
- builtin_shaders-5.3.4f1学习-Sprites-Default
Shader "Sprites/Default" { Properties { [PerRendererData] _MainTex ("Sprite Texture&q ...
- shader实例(二十二)TexGen-球面贴图SphereMap
http://blog.sina.com.cn/s/blog_89d90b7c0102vfqz.html 球面贴图一般用于环境反射,如下图(左边为球面贴图,右边为正常贴图),一个镜面水晶球在这只猫的前 ...