0
点赞
收藏
分享

微信扫一扫

【acwing】871. 约数之和*(数学知识)

m逆光生长 2022-04-04 阅读 68

穿越隧道

在这里插入图片描述

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#include <cmath>
using namespace std;
const int N = 1e6 + 10, mod = 1e9 + 7;
unordered_map<int,int> primes;
typedef long long ll;
int n;
int main(){
    scanf("%d",&n);
    while(n--){
        int x;
        scanf("%d",&x);
        for(int i = 2; i <= x/i; i++){
            while(x % i == 0){
                x/=i;
                primes[i]++;
            }
        }
        if(x > 1) primes[x]++;
    }
    ll res = 0;
    ll sum = 1;
    unordered_map<int,int>::iterator it;
    for(it = primes.begin(); it != primes.end(); it++){
        int kk = it->second;
        int val = it->first;
        ll t = 1;
        while(kk--){
            t = (1 + t*val)%mod;
        }
        sum = (sum%mod)*(t%mod);
    }
    printf("%lld\n",sum%mod);
    return 0;
}
举报

相关推荐

0 条评论