传送门——Luogu

传送门——BZOJ2154

BZOJ2693是权限题

其中JZPFAR是多组询问,Crash的数字表格是单组询问


先推式子(默认\(N \leq M\),所有分数下取整)

\(\begin{align*} \sum\limits_{i=1}^N \sum\limits_{j=1}^M lcm(i,j) & = \sum\limits_{i=1}^N \sum\limits_{j=1}^M \frac{ij}{gcd(i,j)} \\ & = \sum\limits_{d=1}^N d\sum\limits_{i=1}^\frac{N}{d} \sum\limits_{j=1}^\frac{M}{d} ij[gcd(i,j) == 1] \\ & = \sum\limits_{d=1}^N d\sum\limits_{i=1}^\frac{N}{d} \sum\limits_{j=1}^\frac{M}{d} ij \sum\limits_{p \mid gcd(i,j)} \mu(p) \\ & = \sum\limits_{d=1}^N d \sum\limits_{p=1}^\frac{N}{d} p^2 \mu(p) \sum\limits_{i=1}^\frac{N}{dp} \sum\limits_{j=1}^\frac{M}{dp} ij \\ & = \sum\limits_{T=1}^N (\sum\limits_{i=1}^\frac{N}{T}\sum\limits_{j=1}^\frac{M}{T} ij) \sum\limits_{p | T} p^2 \times \frac{T}{p} \times \mu(p) \end{align*}\)

推到这里开始做

首先\(\sum\limits_{i=1}^\frac{N}{T} \sum\limits_{j=1}^\frac{M}{T} ij = \frac{\frac{N}{T}(\frac{N}{T} + 1) \times \frac{M}{T}(\frac{M}{T} + 1)}{4}\),可以数论分块,那么要算\(\sum\limits_{p | T} p^2 \times \frac{T}{p} \times \mu(p) = T \sum\limits_{p|T} p \mu(p)\)的前缀和

首先\(\sum\limits_{p|T} p \mu(p) = (id · \mu) * I\)是一个积性函数,而\(N \leq 10^7\)还没有大到用杜教筛的程度,考虑线性筛。(PS:亲测直接写枚举倍数在Luogu的神机上是能跑过的)

设\(f(i) = \sum\limits_{p | i} p \mu (p)\),首先\(f(1) = 1 , f(p)(p \in Prime) = (1-p) \)。现在假设已计算出了\(f(i)\),要计算\(f(i \times j)\),其中\(j \in Prime\)。

若\(i = j^k \times x(k,x \geq 1 \&\& x \not\mid j)\),那么相比于\(i\),\(i \times j\)产生的因数都可写成\(j^{k+1} \times y(y \mid x)\)的形式,而\(\mu (j^{k+1} \times y) = 0\),所以\(f(i \times j) = f(i) \)

否则,对于\(i\)的一个因数\(x(\mu(x) \neq 0)\),在\(i \times j\)中对应两个因数\(x\)和\(x \times j\),它们会在\(f(i \times j)\)中产生\(x \times j \times (-\mu(x)) + x \times \mu(x) = x \times \mu(x) \times (1 - j)\)的贡献。

所以\(f(i \times j) = \sum\limits_{p | i}p \mu(p) \times (1 - j) = (1-j)f(i) = f(i)f(j)\)

根据上面的式子线性筛即可。总复杂度\(O(n + t\sqrt{n})\)

#include<bits/stdc++.h>
//This code is written by Itst
using namespace std;

inline int read(){
    int a = 0;
    char c = getchar();
    bool f = 0;
    while(!isdigit(c)){
        if(c == '-')
            f = 1;
        c = getchar();
    }
    while(isdigit(c)){
        a = (a << 3) + (a << 1) + (c ^ '0');
        c = getchar();
    }
    return f ? -a : a;
}

const int MOD = 20101009 , MAXN = 1e7 + 7;
int prime[MAXN] , xs[MAXN];
bool nprime[MAXN];
int cnt , N , M;

void init(){
    xs[1] = 1;
    for(int i = 2 ; i <= N ; ++i){
        if(!nprime[i]){
            prime[++cnt] = i;
            xs[i] = MOD - i + 1;
        }
        for(int j = 1 ; j <= cnt && prime[j] * i <= N ; ++j){
            nprime[prime[j] * i] = 1;
            if(i % prime[j] == 0){
                xs[i * prime[j]] = xs[i];
                break;
            }
            xs[i * prime[j]] = 1ll * xs[i] * xs[prime[j]] % MOD;
        }
    }
    for(int i = 1 ; i <= N ; ++i)
        xs[i] = (1ll * xs[i] * i + xs[i - 1]) % MOD;
}

int main(){
    N = read();
    M = read();
    if(N > M)
        swap(N , M);
    init();
    int sum = 0;
    for(int i = 1 , pi ; i <= N ; i = pi + 1){
        pi = min(N / (N / i) , M / (M / i));
        sum = (sum + (xs[pi] - xs[i - 1] + MOD) % MOD * (1ll * (N / i) * (N / i + 1) / 2 % MOD) % MOD * (1ll * (M / i) * (M / i + 1) / 2 % MOD)) % MOD;
    }
    cout << sum;
    return 0;
}

BZOJ2154/BZOJ2693/Luogu1829 Crash的数字表格/JZPFAR 莫比乌斯反演的更多相关文章

  1. 【BZOJ2154】Crash的数字表格(莫比乌斯反演)

    [BZOJ2154]Crash的数字表格(莫比乌斯反演) 题面 BZOJ 简化题意: 给定\(n,m\) 求\[\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\] 题解 以下的一切都 ...

  2. BZOJ2154 Crash的数字表格 【莫比乌斯反演】

    BZOJ2154 Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b) ...

  3. Crash的数字表格(莫比乌斯反演)

    Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b ...

  4. [Luogu P1829] [国家集训队]Crash的数字表格 / JZPTAB (莫比乌斯反演)

    题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...

  5. Crash的数字表格 (莫比乌斯反演)

    Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b ...

  6. bzoj 2154 Crash的数字表格(莫比乌斯反演及优化)

    Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如 ...

  7. 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

    题目背景 提示:原 P1829 半数集问题 已经迁移至 P1028 数的计算 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a ...

  8. [国家集训队]Crash的数字表格 / JZPTAB 莫比乌斯反演

    ---题面--- 题解: $$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}{\frac{ij}{gcd(i, j)}}$$ 改成枚举d(设n < m) $$ans ...

  9. P1829 [国家集训队]Crash的数字表格 / JZPTAB 莫比乌斯反演

    又一道...分数和取模次数成正比$qwq$ 求:$\sum_{i=1}^N\sum_{j=1}^Mlcm(i,j)$ 原式 $=\sum_{i=1}^N\sum_{j=1}^M\frac{i*j}{g ...

随机推荐

  1. 【代码笔记】Web-手机端的meta

    一,天猫 <title>天猫触屏版</title> <meta content="text/html; charset=utf-8" http-equ ...

  2. Salesforce自定义权限简介

    自定义权限(Custom Permission) Salesforce默认提供了多种方式设定用户的权限,比如简档.权限集等.在这些设定中,已经包括了系统中的对象.应用.字段.页面布局等组件,管理员或开 ...

  3. JavaScript长时间未操作自动退出登录

    主要是通过mouseover 来监听有没有进行当前页面操作,通过未操作时间和设定退出的时间做比较,从而退出登录. var oldTime = new Date().getTime(); var new ...

  4. JavaScript 日期与时间戳互转

    1.时间戳转日期格式: function timestampToTime(timestamp) { var date = new Date(timestamp * 1000);//时间戳为10位需*1 ...

  5. 什么是DDoS攻击?DDoS防御的11种方针详解

    对于遭受DDOS攻击的情况是让人很尴尬的,如果我们有良好的DDoS防御方法,那么很多问题就将迎刃而解,我们来看看我们有哪些常用的有效地方法来做好DDoS防御呢. 对于DDoS防御的理解: 对付DDOS ...

  6. 关注的Elasticsearch大牛博客

    1.http://wangnan.tech/ 2.https://elasticsearch.cn/people/wood 3.https://www.jianshu.com/u/244399b1d7 ...

  7. DirectX SDK (June 2010)安装错误S1023,解决方法

    转自:http://hi.baidu.com/rootcat/item/6730f15f85e2c1958c12ed81 DirectX SDK (June 2010)安装错误S1023,解决方法 导 ...

  8. Unity3D开发之3D按钮的声音播放

    这里我们首先就简易的制作一个非常简单的3D按钮![ 图中就一个cube 加个3DText,然后我们就编写代码 [RequireComponent(typeof(CompoundButton))]//特 ...

  9. [20180713]关于hash join 测试中一个疑问.txt

    [20180713]关于hash join 测试中一个疑问.txt --//上个星期做的测试,链接: http://blog.itpub.net/267265/viewspace-2157424/-- ...

  10. 解决wordpress上传文件出现http错误问题

    解决wordpress上传文件出现http错误问题 问题现象 今天上传约1.4m大小的gif文件到wordpress的媒体库时失败,提示http错误. 原因 由于之前一直上传图片都是可以的,所以推测最 ...