数学知识:约数(二)

简介: AcWing 871. 约数之和

AcWing 871. 约数之和

本题链接:AcWing 871. 约数之和

本博客提供本题截图:

image.png

本题解析

计算约数之和的公式:首先把这个数写成质因数的乘积的形式:


image.png

这个数的约数之和就是:

image.png

如何凑出:

image.png

利用:

image.png

AC代码

#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
typedef long long LL;
const int N = 110, mod = 1e9 + 7;
int main()
{
    int n;
    cin >> n;
    unordered_map<int, int> primes;
    while (n -- )
    {
        int x;
        cin >> x;
        for (int i = 2; i <= x / i; i ++ )
            while (x % i == 0)
            {
                x /= i;
                primes[i] ++ ;
            }
        if (x > 1) primes[x] ++ ;
    }
    LL res = 1;
    for (auto p : primes)
    {
        LL a = p.first, b = p.second;
        LL t = 1;
        while (b -- ) t = (t * a + 1) % mod;
        res = res * t % mod;
    }
    cout << res << endl;
    return 0;
}

AcWing 872. 最大公约数

本题链接:AcWing 872. 最大公约数

本博客提供本题截图:

image.png

本题解析

求最大公约数模板:(需要背过)

int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}

AC代码

#include <iostream>
#include <algorithm>
using namespace std;
int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}
int main()
{
    int n;
    cin >> n;
    while (n -- )
    {
        int a, b;
        scanf("%d%d", &a, &b);
        printf("%d\n", gcd(a, b));
    }
    return 0;
}

三、时间复杂度

关于约数各步操作的时间复杂度以及证明,后续会给出详细的说明以及证明过程,目前先鸽了。

目录
相关文章
|
6月前
|
人工智能 算法 BI
数学知识:质数与约数
数学知识:质数与约数
68 0
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
|
12月前
|
Python
牛客刷题之数学基础-约数
牛客刷题之数学基础-约数
49 0
数学知识-约数
数学知识-约数
|
机器学习/深度学习 人工智能
数学知识-质数
数学知识-质数
求最大公约数(更相减损术&辗转相除法)
求最大公约数(更相减损术&辗转相除法)
145 0
|
算法 C++
数学知识:约数(一)
复习acwing算法基础课的内容,本篇为讲解数学知识:约数,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
131 0
数学知识:约数(一)
|
算法
数学知识:质数(一)
复习acwing算法基础课的内容,本篇为讲解数学知识:质数,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
149 0
数学知识:质数(一)