已至四月 夙夜忧昧 爷娘愁容 纸笔缱绻 奈何时过境迁 昔人不荣 乃颦颦蹙蹙 辗转踟蹰 今附资料一手 纵无所用 吾心甚蔚 逆风解意 怜恋春颜
“你是一树一树的花开 是燕在梁间的呢喃 你是爱 是暖 是希望 你是人间四月天”
----前言
<一>数学基础
1. 高精度
- 输入 数字转字符 倒着存
void intt (int a[])
{
string s;
cin>>s;
a[0]=s.length();
for(int i=1;i<=a[0];i++)
a[i]=s[a[0]-i]-'0';
}
- 加减乘
加法
c[i]=a[i]+b[i];
if(c[i]>10) {
c[i]%=10;
c[i+1]++;
}
减法
if(a[i]<b[i]) {
a[i+1]--;a[i]+=10;
}
c[i]=a[i]-b[i];
乘法
c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
x=c[i+j-1]/10;
c[i+j-1]%=10;
当前+=ij+进位
当前%=10
2. 快速幂
#include<iostream>
#include<cstdio>
using namespace std;
int n,k;
void quc() {
int ans=1;
while(k>0) {
if(k%2==1) ans*=n;
n=n*n;
k/=2;
}
cout<<ans;
}
int main() {
cin>>n>>k;
quc();
return 0;
}
3. 最大公约数 最小公倍数
int gcd(int a,int b) {
if(b==0) return a;
else return gcd(b,a%b);
}
4. 筛素数
https://www.cnblogs.com/grubbyskyer/p/3852421.html
- 埃氏筛法
int prime[MAXN];//第i个素数
bool is_pri[MAXN+10];//is_pri[i]表示i是素数
//返回n以内素数的个数
int sieve(int n){
int p=0;
for(int i=0;i<=n;i++)is_pri[i]=true;
is_pri[0]=is_pri[1]=false;
for(int i=2;i<=n;i++){
if(is_pri[i]){
prime[++p]=i;
for(int j=2*i;j<=n;j+=i)is_pri[j]=false;
}
}
return p;
}
- 线性筛
int v[maxxx],prime[maxx];
void primes(int n) {
mamset(v,0,sizeof(v));
m=0;
for(int i=2;i<=n;i++) {
if(v[i]==0)
v[i]=i;
prime[++m]=i;
}
for(int j=1;j<=m;j++) {
if(prime[j]<=v[i]&&prime[j]<=n/i)
v[i*prime[j]]=prime[j];
}
for(int i=1;i<=m;i++)
cout<<prime[j]<<" ";
}
5. 矩阵乘法
- 矩阵加法就是相同位置的数字加一下。
- 矩阵减法也类似。
- 矩阵乘以一个常数,就是所有位置都乘以这个数。
- 矩阵乘矩阵 结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。 例题:蓝书P418例3
6. 邻接矩阵
#include<cstdio>
#include<cmath>
using namespace std;
struct Edge
{
int t,nexty;
Edge(){t=nexty=0;}
}edge[1000000];//链式前向星邻接表
int head[300000]={0},cnt=0;//链式前向星链表变量
void add(int a,int b)//加边
{
cnt++;
edge[cnt].t=b,
edge[cnt].nexty=head[a];
head[a]=cnt;//加边过程
}
<二> 数论
1. 欧拉 https://blog.youkuaiyun.com/liuzibujian/article/details/81086324 gg21
https://www.cnblogs.com/wangxiaodai/p/9758242.html
2. 积性 https://blog.youkuaiyun.com/skywalkert/article/details/50500009
3. 逆元 https://www.cnblogs.com/linyujun/p/5194184.html#4214331120833.html gg21
4. 费马 https://www.cnblogs.com/DynastySun/p/9438167.html gg21
5. 行列式 https://www.cnblogs.com/Zerokei/p/9756781.html
6. 欧几里得 https://www.cnblogs.com/hadilo/p/5914302.html gg21
7. 中国剩余定理 https://blog.youkuaiyun.com/niiick/article/details/80229217 gg21
8. 贝祖定理 https://blog.youkuaiyun.com/lleozhang/article/details/82935400 gg21
ps. 惊http://www.sohu.com/a/232898240_544919 gg21
<三> 计数
1. 整除分块http://www.cnblogs.com/peng-ym/p/8661118.html gg21
2. 莫比乌斯反演http://www.cnblogs.com/peng-ym/p/8647856.html
3. 模意义下的组合数计算(卢卡斯定理)https://www.cnblogs.com/linyujun/p/5199684.html gg21
卢卡斯代码解释 https://zhidao.baidu.com/question/7774.html gg21
4. 计数原理
- 抽屉原理
- 加法原理(排列)
- 乘法原理(组合)
- 容斥原理(集合)