洛谷传送门 bzoj传送门 这道题要用到学习莫比乌斯反演时掌握的整除分块算法,也就是对于一个数n" role="presentation" style="position: relative;">nn,n" role="presentation" style="position: relative;">nn除以1" role="presentation" style…
题目大意 给出正整数 n 和 k 计算 \(G(n, k)=k\ \bmod\ 1 + k\ \bmod\ 2 + k\ \bmod\ 3 + \cdots + k\ \bmod\ n\) 的值 其中 \(k\ \bmod\ i\) 表示 k 除以 i 的余数. 解析 整除分块的一个典型例子. 整除分块解决的是形如 \[ \sum^n_{i=1} ~ \lfloor\frac{n}{i}\rfloor \] 的问题,其复杂度为\(O(\sqrt{n})\). 实际上是规律性的一类问题,打表可以发…
\(\sum_{i=1}^n\;k\;mod\;i\) Solution \(\sum_{i=1}^n\;k\;mod\;i\\=\sum_{i=1}^n(k-i\lfloor{\frac{k}{i}}\rfloor)\\=k\times n-\sum_{i=1}^ni\lfloor{\frac{k}{i}}\rfloor\) 至于后面那项,整除分块即可 #include <bits/stdc++.h> using namespace std; #define int long long si…
Bzoj 1257 [CQOI2007]余数之和 (整除分块) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 一道简单题. 题目要求: \[\sum_{i=1}^nx \% i = \] \[\sum_{i=1}^nk - i * [\dfrac{k}{i}] = \] \[n * k - \sum_{i=1}^n i * [\dfrac{k}{i}]\] 后面这一部分可以用整除分块解决. 需要注意的是.\(k\%i(i >…
参考:题解 令f(i)=k%i,[p]表示不大于p的最大整数f(i)=k%i=k-[k/i]*i令q=[k/i]f(i)=k-qi如果k/(i+1)=k/i=qf(i+1)=k-q(i+1)=k-qi-q=f(i)-q于是,对于区间[l,r],使其之内任意两个整数i,j,都满足k/i=k/j,则f(l)到f(r)是一个递减的等差数列,公差为[k/i].现在就是要把1到n分成这样的一些区间,设某个区间的商(公差)为p设区间内某数为x,则现在要做的是解方程[k/x]=p显然px<=k,因此x<=k…
题目传送门 余数求和 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数.例如G(10, 5)=5 mod 1 + 5 mod 2 + 5 mod 3 + 5 mod 4 + 5 mod 5 …… + 5 mod 10=0+1+2+1+0+5+5+5+5+5=29 输入输出格式 输入格式: 两个整数n k 输出格式: 答案 输入输出样例 输入样例#1…
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的结果…
题意:给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值其中k mod i表示k除以i的余数.例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7 题解k%i=k-\(\left\lfloor\frac{k}{i}\right\rfloor\) \(*i\),然后\(\left\lfloor\frac{k}{i}\right\rfloor…
题意 求 $\sum _{i=1}^n k \ mod \ i$($1\leq n,k\leq 10^9$). 分析 数据范围这么大 $O(n)$ 的复杂度也挺不住啊 根据取模的意义,$k \ mod \ i = k - \left \lfloor \frac{k}{i} \right \rfloor * i$, 因此可以用整除分块,注意分类讨论 $k$ 与 $n$ 的关系. #include<bits/stdc++.h> using namespace std; typedef long l…
传送门 解题思路 数论分块,首先将 \(k\%a\) 变成 \(k-a*\left\lfloor\dfrac{k}{a}\right\rfloor\)形式,那么\(\sum\limits_{i=1}^nk\%i=n*k-\sum\limits_{i=1}^ni*\left\lfloor\dfrac{k}{i}\right\rfloor\),这样的话因为\(\left\lfloor\dfrac{k}{i}\right\rfloor\)的取值只有\(O(\sqrt n)\)级别,所以可以每次找到相等…