传送门——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. loadrunner 场景设计-手工场景方案(Schedule)设计

    场景设计-手工场景方案(Schedule)设计 by:授客 QQ:1033553122 A.   定义方案schedule 在 Scenario Schedule面板中,选择一个方案schedule, ...

  2. js判断当前浏览器语言类型

    console.log(window.navigator.language.slice(0, 2)); 得到的是zh

  3. java代码代替xml实现图片

    1.使用StateListDrawable替换selector public static StateListDrawable getSelector(Drawable normalDrawable, ...

  4. 四元数与欧拉角(RPY角)的相互转换

    RPY角与Z-Y-X欧拉角 描述坐标系{B}相对于参考坐标系{A}的姿态有两种方式.第一种是绕固定(参考)坐标轴旋转:假设开始两个坐标系重合,先将{B}绕{A}的X轴旋转$\gamma$,然后绕{A} ...

  5. [20180705]关于hash join 2.txt

    [20180705]关于hash join 2.txt --//昨天优化sql语句,执行计划hash join right sna,加入一个约束设置XX字段not null,逻辑读从上万下降到50.- ...

  6. 前端限制input输入框(只能输入正整数)

    <input onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{th ...

  7. check

    private int AddNewstoDB(NewsModels newsModels, string dateTimeStr, string jsonStr, string cid, strin ...

  8. Django框架的使用教程--Cookie-Session[五]

    Cookie cookie是存储在浏览器中的一段文本信息,下次同一网站请求,就会发送该cookie给服务器,一般的浏览器都有启动cookie,用cookie存储信息,最好不要存储密码,cookie也有 ...

  9. January 24th, 2018 Week 04th Wednesday

    Each day has enough trouble of its own. 一天的难处一天当. Looking into the sunset I can't help but notice th ...

  10. js如何获得局部变量的值

    方法一: <script> var a; //全局变量 function test(){ var b=20; //局部变量   return b; //返回局部变量的值 }; a=test ...