【数学旅资料】 《四月是你的谎言》

 已至四月 夙夜忧昧 爷娘愁容 纸笔缱绻 奈何时过境迁 昔人不荣 乃颦颦蹙蹙 辗转踟蹰 今附资料一手 纵无所用 吾心甚蔚 逆风解意 怜恋春颜

“你是一树一树的花开 是燕在梁间的呢喃 你是爱 是暖 是希望 你是人间四月天”

                                                                                                                                                        ----前言

 

<一>数学基础

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.  计数原理

  • 抽屉原理
  • 加法原理(排列)
  • 乘法原理(组合)
  • 容斥原理(集合)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值