题目大意

\[\sum_{i=1}^{n}(k\mod i)
\]

\(n,k\leq 10^9\)。

题解

先只考虑\(n\leq k\)的情况。

\[\sum_{i=1}^{n}(k\mod i)=\sum_{i=1}^{n}k-i\lfloor \frac{k}{i}\rfloor=kn-\sum_{i=1}^{n}i\lfloor \frac{k}{i}\rfloor
\]

看到

\[\sum_{i=1}^{n}\lfloor \frac{k}{i}\rfloor
\]

则想到整除分块。

整除分块

结论:

\[\lfloor \frac{k}{i}\rfloor=\lfloor\frac{k}{\lfloor\frac{k}{\lfloor\frac{k}{i}\rfloor}\rfloor}\rfloor
\]

规律

当\(\lfloor\frac{k}{\lfloor\frac{k}{i}\rfloor}\rfloor\)一定时,所有满足上式的\(i\)都在一段连续的区间内(组成了一块),区间右端点是\(\lfloor\frac{k}{\lfloor\frac{k}{i}\rfloor}\rfloor\)。

因此操作时,直接对一块进行统一操作即可。

数学推导

令一块的左端点为\(l\),右端点为\(r\),\(v=\frac{k}{r}\),我们现在要求一块内的和

\[\sum_{i=l}^{r}iv=\sum_{i=0}^{r-l}v(l+i)=v\sum_{i=0}^{r-l}(l+i)
\]

此时注意:和式中运算的次数为\(r-l-0+1=r-l+1\),而不是\(r-l\)。所以接下来

\[原式\neq v(l(r-l)+\sum_{i=0}^{r-l}i)
\]

\[原式=v(l(r-l+1)+\sum_{i=0}^{r-l}i)
\]

在这里错了就完了!

最终运用等差数列的知识得到

\[原式=\frac{v(r+l)(r-l+1)}{2}
\]

把所有的上式加起来再被\(nk\)一减即可。

注意

边界条件:赋值\(r\)时,它不能直接等于\(\lfloor\frac{k}{\lfloor\frac{k}{i}\rfloor}\rfloor\),而应当是它和\(n\)的较小值。另外还要考虑\(\lfloor\frac{k}{i}\rfloor=0\)的情况。

对于\(n>k\)的情况,把额外值加上即可。要明确\(n-k\)以及\(k\)的含义呀!

#include <cstdio>
#include <cstring>
#include <cassert>
#include <algorithm>
using namespace std; #define ll long long int main()
{
ll n, k;
scanf("%lld%lld", &n, &k);
ll ans = 0, extra = 0;
if (n > k)
{
extra = (n - k) * k;
n = k;
}
for (ll l = 1, r; l <= n; l = r + 1)
{
int divVal;
r = (divVal = k / l) ? min(n, k / (k / l)) : n;
ans += divVal * ((r - l + 1) * (l + r) / 2);
assert(ans > 0);
}
printf("%lld\n", n * k - ans + extra);
return 0;
}

luogu2261 [CQOI2007] 余数之和的更多相关文章

  1. BZOJ 1257: [CQOI2007]余数之和sum

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 3769  Solved: 1734[Submit][St ...

  2. bzoj 1257: [CQOI2007]余数之和sum 数学 && 枚举

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 1779  Solved: 823[Submit][Sta ...

  3. BZOJ 1257: [CQOI2007]余数之和sum( 数论 )

    n >= k 部分对答案的贡献为 k * (n - k) n < k 部分贡献为 ∑ (k - ⌊k / i⌋ * i)  = ∑  , ⌊k / i⌋ 相等的数是连续的一段, 此时这段连 ...

  4. 1257: [CQOI2007]余数之和sum

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 2001  Solved: 928[Submit][Sta ...

  5. BZOJ 1257: [CQOI2007]余数之和sum【神奇的做法,思维题】

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 4474  Solved: 2083[Submit][St ...

  6. BZOJ_1257_ [CQOI2007]余数之和sum_数学

    BZOJ_1257_ [CQOI2007]余数之和sum_数学 题意:给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值. 分 ...

  7. BZOJ 1257: [CQOI2007]余数之和

    1257: [CQOI2007]余数之和 Time Limit: 5 Sec  Memory Limit: 128 MB Description 给出正整数n和k,计算j(n, k)=k mod 1 ...

  8. 1257: [CQOI2007]余数之和

    题目链接 bzoj1257: [CQOI2007]余数之和 题解 数论分块,乘等差数列求和 代码 #include<bits/stdc++.h> using namespace std; ...

  9. bzoj千题计划173:bzoj1257: [CQOI2007]余数之和sum

    http://www.lydsy.com/JudgeOnline/problem.php?id=1257 k%i=k-int(k/i)*i 除法分块,对于相同的k/i用等差序列求和来做 #includ ...

随机推荐

  1. HBase编程 API入门系列之get(客户端而言)(2)

    心得,写在前面的话,也许,中间会要多次执行,连接超时,多试试就好了. 前面是基础,如下 HBase编程 API入门系列之put(客户端而言)(1) package zhouls.bigdata.Hba ...

  2. EasyUI 编写实体类树状选择器

    <%@ page contentType="text/html;charset=UTF-8"%> <%@ include file="/WEB-INF/ ...

  3. SQLServer外部数据导入--Excel版

    例如要在test表里插入多行数据 假设字段有: ID.Name 首先要有需要导入的数据的Excel A1 对应ID B1 对应Name 选中Excel第一行的空白处,比如C1,在工具栏的函数文本框里输 ...

  4. CSS3 3D变换实例 滚动的正方体

    笔记: 2D变换 transform 位移   translateX() translateY()  简写:translate(X值,Y值)  正值向右,负值向左 旋转 rotate()  rotat ...

  5. dubbo之泛化实现

    实现泛化调用 泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 Map 表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过 Gene ...

  6. Docker 数据卷重复挂载测试

    没想到一年没写博客了,这中间都是记在自己的笔记本上,大部分网上都有,这个好像没有,所以发上来吧! 本文是测试Docker容器(相同目录/父子目录)同时挂载到宿主机(同目录/不同目录)时的情况,废话少说 ...

  7. C#--条形码和二维码的简单实现

    首先 简单的介绍一下条形码和二维码 条形码: 条形码技术是在计算机应用中产生发展起来的一种广泛应用于商业.邮政.图书管理.仓储.工业生产过程控制.交通运输.包装.配送等领域的自动识别技术.它最早出现在 ...

  8. eas之事件

    选择事件 选择事件是在选择块发生变化后发出.table.addKDTSelectListener(new KDTSelectListener(){    public void tableSelect ...

  9. 【剑指Offer】11、二进制中1的个数

      题目描述:   输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示.   解题思路:   本题有以下两个解决方案:   (1)依次判断每一位.判断的方法是先与1相与,为1则说明该位为1 ...

  10. 写代码怎能不会这些Linux命令?

    转自:https://zhuanlan.zhihu.com/p/28674639?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=to ...