题目链接:洛谷

题目大意:定义 $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(整除分块)的更多相关文章

  1. 洛谷 - P3935 - Calculating - 整除分块

    https://www.luogu.org/fe/problem/P3935 求: \(F(n)=\sum\limits_{i=1}^{n}d(i)\) 枚举因子\(d\),每个因子\(d\)都给其倍 ...

  2. 洛谷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 ...

  3. [洛谷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 ...

  4. [P3935] Calculating - 整除分块

    容易发现题目要求的 \(f(x)\) 就是 \(x\) 的不同因子个数 现在考虑如何求 \(\sum_{i=1}^n f(i)\),可以考虑去算每个数作为因子出现了多少次,很容易发现是 \([n/i] ...

  5. 洛谷 P3935 Calculating 题解

    原题链接 一看我感觉是个什么很难的式子-- 结果读完了才发现本质太简单. 算法一 完全按照那个题目所说的,真的把质因数分解的结果保留. 最后乘. 时间复杂度:\(O(r \sqrt{r})\). 实际 ...

  6. 洛谷 P3935 Calculating

    虽然对这道题没有什么帮助,但是还是记一下:约数个数也是可以线性筛的 http://www.cnblogs.com/xzz_233/p/8365414.html 测正确性题目:https://www.l ...

  7. 洛谷P3935 Calculation [数论分块]

    题目传送门 格式难调,题面就不放了. 分析: 实际上这个就是这道题的升级版,没什么可讲的,数论分块搞就是了. Code: //It is made by HolseLee on 18th Jul 20 ...

  8. 洛谷P4198 楼房重建 (分块)

    洛谷P4198 楼房重建 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题, ...

  9. 洛谷P4135 作诗 (分块)

    洛谷P4135 作诗 题目描述 神犇SJY虐完HEOI之后给傻×LYD出了一题: SHY是T国的公主,平时的一大爱好是作诗. 由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章 ...

随机推荐

  1. python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...

  2. 20155233 Exp1 PC平台逆向破解(5)M

    Exp1 PC平台逆向破解(5)M 实践一 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 步骤 1.cp pwn1 pwn20155233拷贝pwn1文件,命名为pwn201 ...

  3. 浅谈Spring中的事务回滚

        使用Spring管理事务过程中,碰到过一些坑,因此也稍微总结一下,方便后续查阅. 1.代码中事务控制的3种方式 编程式事务:就是直接在代码里手动开启事务,手动提交,手动回滚.优点就是可以灵活控 ...

  4. 使用pandas,7行代码实现朴素贝叶斯

    作者:hhh5460 大抵分成两类 一.离散的.标签化的数据 原文没有使用pandas,我使用pandas重新实现了朴素贝叶斯算法,看起来非常简洁.清爽. import pandas as pd '' ...

  5. stl源码剖析 详细学习笔记 hashset hashmap

    //---------------------------15/03/26---------------------------- //hash_set { /* hash_set概述: 1:这是一个 ...

  6. Asp.Net_上传文件(ftp、webClient、webService)

    第一种:通过FTP来上传文件 首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了.代码如下: <%@ ...

  7. 01_python2.x和python3.x中range()的区别

    Py2.x 1) .range 和xrange都是经常使用的,特别是range()返回一个列表 2) .xrange()一般用来创建迭代对象 Py3.x xrange()不存在了,只有range()而 ...

  8. process.tar.gz

    exec1.c #include <stdio.h> #include <unistd.h> int main() { char *arglist[3]; arglist[0] ...

  9. linux 常用命令-ps(process state)

    ps -ef | grep 端口号:查看某个端口的占用情况 ps -tunlp | grep 端口号:查看占用端口的进程名称

  10. jieba分词学习

    具体项目在githut里面: 应用jieba库分词 1)利用jieba分词来统计词频: 对应文本为我们队伍的介绍:jianjie.txt: 项目名称:碎片 项目描述:制作一个网站,拾起日常碎片,记录生 ...