洛谷P3935 Calculating(整除分块)
题目链接:洛谷
题目大意:定义 $f(x)=\prod^n_{i=1}(k_i+1)$,其中 $x$ 分解质因数结果为 $x=\prod^n_{i=1}{p_i}^{k_i}$。求 $\sum^r_{i=l}f(i)\ mod\ 998244353$。
$1\leq l\leq r\leq 1.6\times 10^{14}$。
阅读以下内容前请先学会前置技能整除分块
先分析一下 $f(x)$ 的本质。
(读者:不要啰嗦来啰嗦去的好吧!这明显是 $x$ 的约数个数吗!是不是想拖延时间?)
好好好,你赢了。我们来看看如何计算。
看到区间 $[l,r]$ 函数求和,我们应该想到拆成前缀和 $pre(r)-pre(l-1)$。
现在看一看 $pre(x)=\sum^x_{i=1}f(i)$ 如何计算。
我们这样考虑:
$1\sim x$ 中有 $\lfloor\frac{x}{1}\rfloor$ 个 $1$ 的倍数,也就是有 $\lfloor\frac{x}{1}\rfloor$ 个数有约数 $1$。
同理有 $\lfloor\frac{x}{2}\rfloor$ 个数有约数 $2$。
有 $\lfloor\frac{x}{3}\rfloor$ 个数有约数 $3$。
$\dots\dots$
有 $\lfloor\frac{x}{i}\rfloor$ 个数有约数 $i$。
所以 $pre(x)=\sum^x_{i=1}\lfloor\frac{x}{i}\rfloor$。
这个……不就是整除分块模板了吗?
对于一段如何求和难度应该不大,可以自己推出来。
(读者:喂,别这么不良心好吧!)
好吧,$[l,r]$ 这段区间的和为 $\lfloor\frac{x}{l}\rfloor(r-l+1)$。
时间复杂度 $O(\sqrt{r})$,空间复杂度 $O(1)$。
既然是模板题一道,那就直接上代码。
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const ll mod=;
- ll l,r;
- ll solve(ll x){ //整除分块
- ll ans=;
- for(ll l=,r;l<=x;l=r+){
- r=x/(x/l); //左边界推算右边界
- ans=(ans+(r-l+)*(x/l))%mod; //求和
- }
- return ans;
- }
- int main(){
- scanf("%lld%lld",&l,&r);
- printf("%lld\n",((solve(r)-solve(l-))%mod+mod)%mod); //前缀和相减
- }
整除分块
洛谷P3935 Calculating(整除分块)的更多相关文章
- 洛谷 - P3935 - Calculating - 整除分块
https://www.luogu.org/fe/problem/P3935 求: \(F(n)=\sum\limits_{i=1}^{n}d(i)\) 枚举因子\(d\),每个因子\(d\)都给其倍 ...
- 洛谷P3935 Calculating (莫比乌斯反演)
P3935 Calculating 题目描述 若xx分解质因数结果为\(x=p_1^{k_1}p_2^{k_2}\cdots p_n^{k_n},令f(x)=(k_1+1)(k_2+1)\cdots ...
- [洛谷P3935]Calculating
题目大意:设把$x$分解质因数的结果为$x=p_1^{k_1}p_2^{k_2}\cdots p_n^{k_n}$,令$f(x)=(k_1+1)(k_2+1)\cdots (k_n+1)$,求$\su ...
- [P3935] Calculating - 整除分块
容易发现题目要求的 \(f(x)\) 就是 \(x\) 的不同因子个数 现在考虑如何求 \(\sum_{i=1}^n f(i)\),可以考虑去算每个数作为因子出现了多少次,很容易发现是 \([n/i] ...
- 洛谷 P3935 Calculating 题解
原题链接 一看我感觉是个什么很难的式子-- 结果读完了才发现本质太简单. 算法一 完全按照那个题目所说的,真的把质因数分解的结果保留. 最后乘. 时间复杂度:\(O(r \sqrt{r})\). 实际 ...
- 洛谷 P3935 Calculating
虽然对这道题没有什么帮助,但是还是记一下:约数个数也是可以线性筛的 http://www.cnblogs.com/xzz_233/p/8365414.html 测正确性题目:https://www.l ...
- 洛谷P3935 Calculation [数论分块]
题目传送门 格式难调,题面就不放了. 分析: 实际上这个就是这道题的升级版,没什么可讲的,数论分块搞就是了. Code: //It is made by HolseLee on 18th Jul 20 ...
- 洛谷P4198 楼房重建 (分块)
洛谷P4198 楼房重建 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题, ...
- 洛谷P4135 作诗 (分块)
洛谷P4135 作诗 题目描述 神犇SJY虐完HEOI之后给傻×LYD出了一题: SHY是T国的公主,平时的一大爱好是作诗. 由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章 ...
随机推荐
- 20155227辜彦霖《基于Cortex-M4的UCOSIII的应用》课程设计个人报告
20155227辜彦霖<基于Cortex-M4的UCOSIII的应用>课程设计个人报告 一.个人贡献 参与课设题目讨论及完成全过程: 资料收集: 负责主要代码调试: 撰写小组结题报告. 二 ...
- 2017-2018-2 《网络对抗技术》 20155302 第二周 Exp1 PC平台逆向破解(5)M
2017-2018-2 <网络对抗技术> 20155302 第二周 Exp1 PC平台逆向破解(5)M 1-实践目标 1.1-实践介绍 本次实践的对象是一个名为pwn1的linux可执行文 ...
- java之平台无关
java虚拟机是执行字节码文件(.class)的虚拟机进程. java源程序(.java)被编译器编译成------>字节码文件(.class),然后字节码文件,将由java虚拟机,解释成--- ...
- libgdx学习记录18——Box2d物理引擎
libgdx封装了Box2D物理引擎,通过这个引擎能够模拟物理现实,使设计出的游戏更具有真实感. libgdx中,Box2d程序的大概过程: 1. 创建物理世界world,并设置重力加速度. 2. 创 ...
- ssm整合各配置文件
ssm整合 1.配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns ...
- 如何自出版一本书:定制 bookdown
目录 如何自出版一本书:定制 bookdown bookdown 的第一步 亚马逊 Kindle 格式 创建书籍 _bookdown.yml 注意行宽 写在每个 .Rmd 文件的开头 index.Rm ...
- 一张图理解Git
更详细的git介绍:Git操作指南
- 配置tomcat虚拟路径
这个问题其实很简单,首先找到你安装的tomcat的路径然后,在Tomcat6.0/conf/Catalina路径下创建localhost文件夹,如果有,就不用创建,然后在该文件夹下创建一个xml文件, ...
- CSS——【元素内边距padding、元素外边距margin、元素边框border-width、元素大小width/height】与【元素显示大小】的关系
一.基本知识 padding:元素内边距,指的是元素内边框到元素中内容的距离. 用法: padding:长度|百分比 padding-top:长度|百分比 padding-bottom:长度|百分比 ...
- 基于python的机器学习实现日元币对人民币汇率预测
## 导入所需的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow a ...