传送门——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. 第二次前端作业grid布局练习

    grid布局 CSS Grid(网格) 布局(又称为 “Grid(网格)” ),是一个二维的基于网格的布局系统,它的目标是完全改变我们基于网格的用户界面的布局方式.CSS 一直用来布局我们的网页,但一 ...

  2. css中元素border属性的构成以及配合属性值transparent可得到一些特殊形状1.0

    css中我们经常使用到元素的border属性和属性值transparent,可能好多人还不太了解border的构成以及配合transparent的一些效果: 1.border的构成如下所示:   ht ...

  3. git本地仓库关联多个remote,怎么用本地一个分支向不同remote不同分支推送代码

    我想这个问题,是大家关注的问题,这个问题,我非常关注. 背景:在公司开发项目,我们一般都要把项目推送到公司领导创建的一个远程仓库里边去,但是我们同时也有自己的小仓库,这样的话,如何方便的将我们的代码, ...

  4. Expo大作战(四十)--expo sdk api之 Calendar,Constants

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

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

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

  6. Asp.net Mvc、webApi配置允许跨域

    Web.config 下<system.webServer> 节点下配置 <httpProtocol> <customHeaders> <add name=& ...

  7. FUSE 文件系统 example部分 源码注释 (libfuse 2.9.9)

    本篇文章主要是针对fuse-2.9.9 Example 部分 给出的源码,结合官方文档,以及网上的资料给出注释,希望能给正在学习的你们一点帮助. Hello.c /* FUSE: Filesystem ...

  8. 转 让Python在Android系统上飞一会儿

    让Python在Android系统上飞一会儿 地址: http://blog.csdn.net/ccwwff/article/details/6208260

  9. 浅copy与深copy举例

     例1: #!/usr/bin/env python import copy d1 = {'x':1,'y':2,'z':[3,4.5]} d2 = d1 d3 = d1.copy() d4 = co ...

  10. Mac快速上手指南

    上周刚入手了2017版MacBookPro,预装macOS High Sierra.第一次接触Mac系统,经过一周的使用,简单总结下与Windows相比最常用的功能,快速上手. 1.Mac键盘实现Ho ...