[P3935] Calculating - 整除分块】的更多相关文章

容易发现题目要求的 \(f(x)\) 就是 \(x\) 的不同因子个数 现在考虑如何求 \(\sum_{i=1}^n f(i)\),可以考虑去算每个数作为因子出现了多少次,很容易发现是 \([n/i]\) 于是整除分块一下就可以了 #include <bits/stdc++.h> using namespace std; #define int long long const int mod = 998244353; int f(int n) { int l=1,ans=0; while(l&…
https://www.luogu.org/fe/problem/P3935 求: \(F(n)=\sum\limits_{i=1}^{n}d(i)\) 枚举因子\(d\),每个因子\(d\)都给其倍数贡献\(1\),倍数一共有\(\lfloor\frac{n}{d}\rfloor\)个. \(F(n)=\sum\limits_{d=1}^{n}\lfloor\frac{n}{d}\rfloor\) 套个分块,上. #include<bits/stdc++.h> using namespace…
题目链接:洛谷 题目大意:定义 $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$ 的约数个数吗!是不是想拖延时间?) 好好好…
上模板题例题: [CQOI2007]余数求和 洛谷 BZOJ 题目大意:求 $\sum^n_{i=1}k\ mod\ i$ 的值. 等等……这题就学了三天C++的都会吧? $1\leq n,k\leq 10^9$.(一口老血喷到屏幕上) $O(n)$ 行不通了,考虑别的做法. 我们来看一下 $\lfloor\frac{x}{i}\rfloor$ 的值. $x=9$:(不包括0,只有4种取值?) i 1 2 3 4 5 6 7 8 9 10 x/i 9 4 3 2 1 1 1 1 1 0 $x=1…
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 (k_n+1)f(x)=(k1​+1)(k2​+1)⋯(kn​+1),\)求\(\sum_{i=l}^rf(i)\)对\(998244353\)取模的结果. 输入输出格式 输入格式: 输入共一行,两个数,\(l,r.\) 输出格式: 输出共一行,一个数,为\(\sum_{i=l}^rf(i)\)对\…
1225 余数之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 F(n) = (n % 1) + (n % 2) + (n % 3) + ...... (n % n).其中%表示Mod,也就是余数. 例如F(6) = 6 % 1 + 6 % 2 + 6 % 3 + 6 % 4 + 6 % 5 + 6 % 6 = 0 + 0 + 0 + 2 + 1 + 0 = 3. 给出n,计算F(n), 由于结果很大,输出Mod 1000000007的结果…
整除分块 一般形式:\(\sum_{i = 1}^n \lfloor \frac{n}{i} \rfloor * f(i)\). 需要一种高效求得函数 \(f(i)\) 的前缀和的方法,比如等差等比数列求和或对于积性函数的筛法等,然后就可以用整除分块的思想做. 题目解法 化公式变成比较方便的形式: \(\ \sum_{i = 1}^n \sum_{j = 1}^m (n \mod i)(m \mod j), i \ne j\) \(= \sum_{i = 1}^n \sum_{j = 1}^m…
#include<bits/stdc++.h> #define LL long long using namespace std; ; bool vis[maxn]; int prime[maxn]; int mu[maxn]; int sum1[maxn]; int sum2[maxn]; ; void get_mu()// mo bi su si han shu { mu[]=; vis[]=; ;i<maxn;i++) // prime = 0; other = 1; { ;} ;…
题面 LOJ #2802. 「CCC 2018」平衡树 题面有点难看...请认真阅读理解题意. 转化后就是,给你一个数 \(N\) ,每次选择一个 \(k \in [2, N]\) 将 \(N\) 变成 \(\displaystyle \lfloor \frac{N}{k} \rfloor\) ,到 \(1\) 停止. 求一共有多少不同的操作序列,也就是操作次数不一样或者某次操作的 \(k\) 不相同. 题解 首先考虑 dp ,令 \(f_i\) 为以 \(i\) 为开头的不同操作序列数. 显然…
[POI2007]ZAP-Queries \(solution:\) 唉,数论实在有点烂了,昨天还会的,今天就不会了,周末刚证明的,今天全忘了,还不如早点写好题解. 这题首先我们可以列出来答案就是: \(ans=\sum_{i=1}^{a}{\sum_{j=1}^{b}{[gcd(i,j)==d]}}\) 我们发现后面那个东西(只有\(gcd(i,j)==d\) 时才为一)跟莫比乌斯很像,莫比乌斯是(只有$n==$1 才为一),所以我们再尝试转化一下(把d转化成1): \(ans=\sum_{i…