数论学习(2019.4.4 - 2019.4.7) --4.4

 

 数学基础

一、高精度

介绍就不写了,直接贴代码了

读入读出在最后再加上吧qwq

char str[1000];
int a[1000],b[1000],c[1000];

 

高精 + / -(这两个差不多,一块吧)

for(int i=len-1;i>=0;i--)
    b[len-i] = str[i]-'0';
    int m = len;
    n = max(n,m);
    for(int i=1;i<=n;i++)
    c[i]=a[i]+b[i];
    for(int i=1;i<=n;i++)
    {
        c[i + 1] += c[i]/10;
        c[i] %= 10;
    }
    for(int i=1;i<=n;i++)
    if(c[i]<0)
    {
        c[i] += 10;
        c[i + 1] -= 1;
    }
    while(c[n] == 0)
    n -= 1;

 

高精 *

for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    c[i + j - 1] += a[i] * b[j];
    for(int i=1;i<=n+m-1;i++)
    {
        c[i + 1] += c[i] / 10;
        c[i] %= 10;
    }
    n = n + m - 1;
    while(c[n + 1] > 0)
    n += 1;

 

高精 /  (B为低精的一个数)

        int B;
    cin>>B;
    for(int i=n;i>0;i--)
    {
        c[i] = a[i]/B;
        a[i - 1] += (a[i] % B) * 10;
    }
    while(c[n] == 0 && n > 0)
    n--;

 

输入输出

        scanf("%s", str);  //输入 
    int len = strlen(str);
    for(int i=len-1;i>=0;i--)
    a[len - i] = str[i] - '0';
        for(int i=n;i>0;i--)  //输出 
    printf("%d",c[i]);

 

二、快速幂:(代码未检查qwq)

1.分治

2.快速幂

 

三、费马小定理

应用:

三、(代码未检查qwq)

GCD

LCM

四、质数判别(代码未检查)

1.直接判

............

2.sqrt判别

3.埃氏筛法(O(n loglogn))

4.线性筛法(接近O(n))

五、Euler

欧拉函数

是小于或等于n的正整数中与n互质的数的数目

欧拉定理

若n,a为正整数,且n,a互素,则

 

 矩阵

其中满足

举一个例子:

其中请注意:

矩阵乘法满足结合律、分配率

但是不满足交换律

例:求 f[n] 即斐波那契数列的第n项

其中便是针对于这个进行运算q

拓展:

若f(n) = 4f(n - 1) - 3f(n - 2) + 2f(n - 4) + b

若f(n) = 4f(n - 1) - 3f(n - 2) + 2f(n - 4) + b

则将变换矩阵改为

 

 

 邻接矩阵的一些应用:

建立邻接矩阵,并对于邻接矩阵进行k次方的运算,得出的结果f[A][B]即为结果

延伸一下:

将刚才的求和改为求最小值min

即为min n i =1 min (a[A][i] * a[i][B]) i 其中的路径

 

一些特殊的矩阵:

上三角矩阵:

 

分块矩阵:

 

高斯消元:

针对于求解 n 元 1 次线性方程组

形如:

 

举个例子:

 

无解的情况:

无数解的情况:

 

 

行列式已经学过就不再多提了;

单提一点:

 

矩阵逆元:

对于A进行变换的同时对于I单位矩阵进行变换

在A到达单位矩阵后I进行相等的变换会得到它的逆元

 

矩阵树定理:

还有一个 k ^ 2 log n求常系数线性递推方程(老师yy出来的)

太晚了...明天再补吧..

 

posted @ 2019-04-04 21:37  6954717  阅读(203)  评论(0编辑  收藏  举报