挖坑---填坑

一 .数学基础

1.模运算的基本法则与相关定理

1)(a+b)%p=((a%p)+(b%p))%p

   (a-b)%p=((a%p)-(b%p)+p)%p

   a*b%p=((a%p)*(b%p))%p

   (a^b)%p=((a%p)^b)%p (本质就是乘法)

2)费马小定理,欧拉定理,扩展欧拉定理

 费马小定理:p为素数,a,p互质,a^(p-1)%p=1

 欧拉定理:a,p互质a^(phi(p))%p=1 (其实是费马小定理的一般情况,phi(n)表示1~n中和n互质的数的个数)

 扩展欧拉定理:①a,p互质,有a^b%p=a^(b%phi(p))%p ②a,p不互质,b<phi(p),有a^b%p=a^b%p ③a,p不互质,且b>=phi(p),有a^b%p=a^(b%phi(p)+phi(p))%p

3)逆元的求法

①exgcd ②费马小定理/欧拉定理 ③O(n)求逆元 ④n!的逆元可以计算出最后一个然后往前倒推

ps:

1 void exgcd(int a,int b,int &x,int &y){
2  if(!b)x=1,y=0;
3  else {
4   exgcd(b,a%b,x,y);
5   int tmp=y;y=x-a/b*y;x=tmp;
6  }
7 }
exgcd

phi函数求法将会在后面介绍。

2.部分数学函数

1)三角函数与反三角函数

sin(x) cos(x) tan(x) acos(x) asin(x) atan(x) 另有atan2(x,y) 暂时没看出来意义何在

可以利用asin(1)来得到Π/2的值

2)指数与对数函数

exp(x)表示e^x  pow(x,y)表示x^y sqrt(x) log(x)以e为底的对数 log10(x)和log2(x)同理

3)随机数函数

rand()随机生成一个short型的数字 需要srand(x)写在最开始来选取第x张随机数表,否则默认第一张,为了方便我们通常写srand(time(NULL))来使得每次都用的不同的随机数表

4)其他

ceil(x)上取整 floor(x)下取整 fabs(x)/abs(x)取绝对值(未发现区别) modf(x,&y)返回x的小数部分,将其整数部分赋值到y上  fmod(x,y)表示x%y(dl型) 

原文地址:https://www.cnblogs.com/hyghb/p/12489066.html