传送门——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. MVVM 和 VUE

    一,使用jquery和使用vue的区别 二,对MVVM的理解 三,vue中如何实现响应式 四,vue如何解析模版 五,vue整个实现流程   一,使用jquery和使用vue的区别 jquery实现t ...

  2. Java数据解析---PULL

    安卓和JAVA解析xml文件的三种方式: 1.PULL解析 2.SAX解析 3.DOM解析 三者各有所长,依情况选择解析方式 1.PULL和SAX均采用流式解析,意味着只能从头读到底,无法像DOM解析 ...

  3. 《数据库系统概念》11-扩展的E-R特性

    ​虽然基本的E-R特性可以应对大部分数据库建模,但为了使用方便,也提供扩展的E-R特性 一.特化Specialization有时一个实体集会保护若干子集,这些子集各自具有不同的属性.比如person可 ...

  4. Django ModelForm 校验数据格式

    发现ModelForm很好用,用来做form表单验证效果很好.但是也要注意几点. forms的用法: 使用默认方式:继承forms.Form类,类里面的字段名称一定要和前端HTML里面的form表单里 ...

  5. 【第二篇】SAP ABAP7.5x新语法之OPEN SQL

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之OPEN SQL ...

  6. MATLAB三维作图——隐函数

    MATLAB三维作图——隐函数 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 对于三维隐函数,没有显式表达式,无法通过Matlab现成的3-D画图函数 ...

  7. 写jQuery插件该注意的

    写好jQuery插件,有一些注意的地方(持续添加). 支持UMD 现在前端开发讲究模块化,所以jQuery插件也最好能够兼顾模块化. 模块化模式大概有几种: AMD.CommonJs.UMD. AMD ...

  8. 建立标准编码规则(一)-自定义C#代码分析器

    1.下载Roslyn的Visual Studio分析器模板插件(VS2015 或VS2017) https://marketplace.visualstudio.com/items?itemName= ...

  9. leetcode 395. Longest Substring with At Least K Repeating Characters(高质量题)

    只能说还是太菜,抄的网上大神的做法: idea: mask 的每一位代表该位字母够不够k次,够k次为0,不够为1 对于每一位将其视为起点,遍历至末尾,找到其最大满足子串T的下标max_idx,之后从m ...

  10. [ ArcGIS for Server 10.1 系列 ] - 重新创建Site

    一般当ArcGIS Server Site发生错误.ArcGIS Server无法启动或者ArcGIS Server某服务没有实例,就可能需要重新的创建Site.有时可以通过重新创建Site,就发现其 ...