數論學習(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出來的)

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章