首页 > 其他 > 详细

LibreOJ - 10202 樱花 数论,因子个数,唯一分解

时间:2020-08-11 21:37:15      阅读:64      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

int prime[maxn];   
int vis[maxn];     
int euler_sieve(int n) {
    int cnt = 0;
    vis[1] = 1;
    for (int i = 2; i <= n; i++) {
        if (!vis[i]) prime[cnt++] = i;
        for (int j = 0; j < cnt; j++) {
            if (i * prime[j] > n) break;
            vis[i * prime[j]] = 1;
            if (i % prime[j] == 0) break;
        }
    }
    return cnt;  
}


int main() {
    int cnt = euler_sieve(1000002);
    unordered_map<int, ll> mp;
    int n = readint();
    for (int i = 1; i <= n; i++){
        if (!vis[i]) {
            mp[i]++;
            continue;
        }
        ll tmp = i;
        for (int j = 0; j < cnt && (ll)prime[j] * prime[j] <= tmp; j++) {
            if (tmp % prime[j] == 0) while (tmp % prime[j] == 0) mp[prime[j]]++, tmp /= prime[j];
        }
        if (tmp > 1) mp[tmp]++;
    }
    ll res = 1ll;
    for (auto it = mp.begin(); it != mp.end(); it++) 
        res = res * ((1ll + 2 * it->second) % MOD) % MOD;
    Put(res);
}

 

LibreOJ - 10202 樱花 数论,因子个数,唯一分解

原文:https://www.cnblogs.com/hznumqf/p/13479820.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!