dalaoYHH爆虐

问题 H:mcd

题目描述

给出两个长为 \(n\) 的数列 \({a_n},{b_n}\),保证 \(a_i\le b_i(i=1,2,\cdots,n)\)。

现在您需要对于所有的 $k \in [1,m] \cup \mathbb{Z} $,求出满足以下条件的数列 \(c\) 的数量:

  • 长为 \(n\);
  • \(a_i\le c_i\le b_i (i=1,2,\cdots,n)\);
  • \(\gcd\limits_{i=1}^n{c_i}=k\),其中 \(\gcd\) 是最大公约数的英文简写。

对 \(998244353\) 取模。

输入格式

第一行两个正整数 \(n,m\)。

此后 \(n\) 行,每行两个正整数,分别表示 \(a,b\)。

输出格式

一行一个非负整数,表示数列数对 \(998244353\) 取模的结果。

样例输入

3 10
1 9
4 8
7 10

样例输出

151
20
3
3
1
0
1
1
0
0

提示

对于 \(100\%\) 的数据,\(1\le n,m,a_i,b_i\le 10^5,a_i\le b_i\)。

题解

首先可以想到容斥,定义函数\(f(i,j)=\lfloor\frac{b_i}{j}\rfloor-\lfloor\frac{a_i-1}{j}\rfloor\)

设\(G_i\)代表最大公约数为\(k\)的倍数的数列的个数,对于每个\(G_i\),\(G_i=\prod\limits_{j=1}^n{f(j,i)}\)

但是这样肯定会超时,左思右想想不出来,后来YHH&XWKdalao告诉了我做法,核心优化叫做整除分块

这个东西是什么呢,就是对于一个算式 \(H(n)=\lfloor\frac{n}{i}\rfloor\) 当 \(i\) 从 \(1\) 增大到 \(n\) 时,ta的值最多只会变化\(2\sqrt n\)次,而且是一直变小的

首先把思路反一下,将它变成一道算贡献的题目,刚开始 \(G_j\) 全都是 \(1\) ,枚举每对 \(a_i,b_i\) 和每个\(G_j\) ,每个 \(G_j\)都乘上 \(f(i,j)\),根据整除分块,\(f\) 的值一共最多只会变化\(4\sqrt n\)次,也就是说其实对于\(i\)一定的\(f\)函数,只有\(4\sqrt n\)种不同的值,如果使用区间乘的话,就只需要乘至多\(4\sqrt n\)个不同的值,也可使用差分

还有一些细节,就是分块的左右端点如何算,首先\(H(n)=n\)时,\(i=1\),\(l_1=1\),对于每个 \(1<i\le n\) 有 \(l_i=r_{i-1}+1\),难点就是如何通过 \(l_i\) 算出 \(r_i\)

整除分块例题

Atziluth's Last Contest. 001题解的更多相关文章

  1. AtCoder Grand Contest 001 题解

    传送门 \(A\) 咕咕咕 const int N=505; int a[N],n,res; int main(){ scanf("%d",&n); fp(i,1,n< ...

  2. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

  3. AtCoder Beginner Contest 153 题解

    目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...

  4. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

  5. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  6. M-SOLUTIONS Programming Contest 2020 题解

    M-SOLUTIONS Programming Contest 2020 题解 目录 M-SOLUTIONS Programming Contest 2020 题解 A - Kyu in AtCode ...

  7. AtCoder Beginner Contest 173 题解

    AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...

  8. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

  9. AtCoder Beginner Contest 169 题解

    AtCoder Beginner Contest 169 题解 这场比赛比较简单,证明我没有咕咕咕的时候到了! A - Multiplication 1 没什么好说的,直接读入两个数输出乘积就好了. ...

  10. AtCoder Beginner Contest 148 题解

    目录 AtCoder Beginner Contest 148 题解 前言 A - Round One 题意 做法 程序 B - Strings with the Same Length 题意 做法 ...

随机推荐

  1. Vue3 如何接入 i18n 实现国际化多语言

    1. 基本方法 在 Vue.js 3 中实现网页的国际化多语言,最常用的包是 vue-i18n,通常我们会与 vue-i18n-routing 一起使用. vue-i18n 负责根据当前页面的语言渲染 ...

  2. Java 代码实现POST/GET请求

    方式一 package com.cyb.util; import java.io.BufferedReader; import java.io.DataOutputStream; import jav ...

  3. mybatis log4j打印sql语句

    依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</a ...

  4. 某手创作服务 __NS_sig3 sig3 | js 逆向

    拿获取作品列表为例 https://cp.kuaishou.com/rest/cp/works/v2/video/pc/photo/list?__NS_sig3=xxxxxxxxxxx 搜索__NS_ ...

  5. 【RocketMQ 系列】 RocketMQ 双主双从(同步双写) 集群搭建

    1. 各角色介绍 Producer:消息的发送者:举例:发信者 Consumer:消息接收者:举例:收信者 Broker:暂存和传输信息:举例:邮局 NameServer:管理Broker:举例:各个 ...

  6. 解决方案 | onenote无法同步,显示:证书错误,应用程序在加载SSL库是遇到内部错误。

    解决方案:一般是公司网络或者学校网络的问题,更换手机使用的数据流量热点无线网络即可.

  7. webpack4.15.1 学习笔记(九) — 11个基础的插件使用

    目录 html-webpack-plugin clean-webpack-plugin webpack-manifest-plugin HotModuleReplacementPlugin(内置) m ...

  8. 第一章 FFmpeg初体验:在Centos7.9下编译FFmpeg!

    FFmpeg 官方网站:https://ffmpeg.org//download.html#build-linux 1.下载源码 1.1 第一种方式,官网上面下载源码包: 截至目前最新的版本是7.0. ...

  9. 【SpringBoot】05 探索配置方式 Part1 指定和导入配置的注解

    @PropertySource & @ImportResource @ConfigurationProperties默认从全局配置文件中读取 我们可以拆解出来分成单独的配置文件 [提取Bean ...

  10. 智能工业化的关键一环:sim2real的仿真环境设计

    智能工业化,不论是智能机器人技术还是数字孪生技术,都不可避免的要使用的一个技术就是仿真环境技术. 在智能工业化还停留在学术阶段的时候,大家都可以使用一些开源的免费的仿真环境做research,但是到了 ...