题目链接:余数之和

题意:给定正整数$n$和$k$,计算$k\%1+k\%2+\dots+k\%n$的值

思路:因为$k\%i=k-\left \lfloor \frac{k}{i} \right \rfloor * i$,所以问题就转换为计算$n*k-\sum _{i=1}^{n}\left \lfloor \frac{k}{i} \right \rfloor*i$

在某一段区间$(l,r)$内$\left \lfloor \frac{k}{i} \right \rfloor$的值是相等的,并且等于$\left \lfloor \frac{k}{l} \right \rfloor$,其中$r=\left \lfloor \frac{k}{\left \lfloor \frac{k}{l} \right \rfloor} \right \rfloor$

证明:设$g(x)=\left \lfloor \frac{k}{\left \lfloor \frac{k}{x} \right \rfloor} \right \rfloor$

因为

$$\left \lfloor \frac{k}{x} \right \rfloor\leq \frac{k}{x}$$

所以

$$\left \lfloor \frac{k}{\left \lfloor \frac{k}{x} \right \rfloor} \right \rfloor\geq \left \lfloor \frac{k}{\frac{k}{x}} \right \rfloor=x$$

即$g(x)\geq x$,于是有

$$\left \lfloor \frac{k}{g(x)} \right \rfloor\leq \left \lfloor \frac{k}{x} \right \rfloor\tag{1}$$

又因为

$$\left \lfloor \frac{k}{\left \lfloor \frac{k}{x} \right \rfloor} \right \rfloor\leq \frac{k}{\left \lfloor \frac{k}{x} \right \rfloor}$$

所以

$$\frac{k}{\left \lfloor \frac{k}{\left \lfloor \frac{k}{x} \right \rfloor} \right \rfloor}\geq \frac{k}{\frac{k}{\left \lfloor \frac{k}{x} \right \rfloor}}=\left \lfloor \frac{k}{x} \right \rfloor$$

$$\left \lfloor \frac{k}{g(x)} \right \rfloor\geq \left \lfloor \frac{k}{x} \right \rfloor\tag{2}$$

由$(1)(2)$得

$$\left \lfloor \frac{k}{g(x)} \right \rfloor= \left \lfloor \frac{k}{x} \right \rfloor$$

所以在$i\in[x,g(x)]$范围内,有$\left \lfloor \frac{k}{i} \right \rfloor$的值都相等,即$r=\left \lfloor \frac{k}{\left \lfloor \frac{k}{l} \right \rfloor} \right \rfloor$

在求$\sum _{i=1}^{n}\left \lfloor \frac{k}{i} \right \rfloor*i$时,可以分为一块一块来求,对于每一块,把$\left \lfloor \frac{k}{l} \right \rfloor$,然后利用等差数列求和公式求出$\sum _{i=l}^{r}i$即可。

#include <iostream>
#include <algorithm>
#include <cstdio> using namespace std; typedef long long ll; ll n, k; int main()
{
scanf("%lld%lld", &n, &k);
ll res = n * k;
for (ll l = , r = ; l <= n; l = r + ) {
if (k / l) r = min(k / (k / l), n);
else r = n;
res -= (k / l) * (r - l + ) * (l + r) / ;
}
printf("%lld\n", res);
return ;
}

BZOJ - 1257 余数之和(数学)的更多相关文章

  1. BZOJ 1257 余数之和

    Description 给出正整数\(n\)和\(k\),计算\(j(n, k)=k\;mod\;1\;+\;k\;mod\;2\;+\;k\;mod\;3\;+\;-\;+\;k\;mod\;n\) ...

  2. BZOJ 1257 余数之和sum

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1257 题意:计算sigama(m%i)(1<=i<=n). 思路: 这样就简 ...

  3. BZOJ 1257 - 余数之和 - [CQOI2007]

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 题意: 给定正整数 $n,k$,求 $(k \bmod 1) + (k \bmod ...

  4. [bzoj] 1257 余数之和sum || 数论

    原题 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值,其中k mod i表示k除以i的余数. \(\sum^n_{i=1} ...

  5. bzoj 1257 余数之和 —— 数论分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 \( \sum\limits_{i=1}^{n}k\%i = \sum\limits_ ...

  6. BZOJ 1257 余数之和 题解

    题面 这道题是一道整除分块的模板题: 首先,知道分块的人应该知道,n/i最多有2*sqrt(n)种数,但这和余数有什么关系呢? 注意,只要n/i的值和n/(i+d)的值一样,那么n%i到n%(i+d) ...

  7. BZOJ 1257 余数之和sum(分块优化)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=46954 题意:f(n, k)=k mod 1 + k mod 2 ...

  8. bzoj 1257: [CQOI2007]余数之和 (数学+分块)

    Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值 其中k mod i表示k除以i的余数. 例如j(5 ...

  9. BZOJ 1257 [CQOI2007]余数之和 数学

    都不知道说什么好...咕咕到现在.. 求:$\sum_{i=1}^n \space k\space mod \space i$ 即求:$n*k-\sum_{i=1}^n\space \lfloor \ ...

随机推荐

  1. 训练20191009 2018-2019 ACM-ICPC, Asia East Continent Finals

    2018-2019 ACM-ICPC, Asia East Continent Finals 总体情况 本次训练共3小时20分钟,通过题数4. 解题报告 D. Deja vu of - Go Play ...

  2. D3新学习

    1. Python Web(1):建立第一个Web项目 直接将d3 index.html代码拷贝进index.html中即可. 2. D3入门教程; D3.js的v5版本入门教程

  3. Css3 里的弹性盒的比例关系

    前两天朋友出去面试遇到了尴尬的问题,原题是:"在一个盒子里包裹着三个子元素,让子元素的宽度以1:1.1:2.1:3的关系依次展示" 这就尴尬了啊.................. ...

  4. 2019-08-01 纪中NOIP模拟B组

    T1 [JZOJ2642] 游戏 题目描述 Alice和Bob在玩一个游戏,游戏是在一个N*N的矩阵上进行的,每个格子上都有一个正整数.当轮到Alice/Bob时,他/她可以选择最后一列或最后一行,并 ...

  5. 素问 - IC跨期套利

    摘自<小韭的学习圈> Q 我现在是长持ic.我观察到IC1907和IC1909的贴水差会有波动.有时候,IC 1907涨的多,有时候IC1909涨的多.而在某一天这个趋势相对是稳定的. 那 ...

  6. Linux使用mount挂载samba共享文件夹

    挂载smb的目录,使用读写644权限 mount -t cifs -o "rw,dir_mode=0644,file_mode=0644,username=username,password ...

  7. 【红黑树】的详细实现(C++)

    红黑树的介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树.红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键 ...

  8. FreeRTOS学习笔记2:列表

    list.h 列表结构List_t 列表:主要看三个 xLIST:1.5检查列表完整性的.但是需要开启.默认不开启 2:记录列表中列表项的 数量:3:记录当前列表项 索引号:4:列表中的最后一个 列表 ...

  9. ubuntu 下的ftp详细配置

    FTP(文件传输协议)是一个较老且最常用的标准网络协议,用于在两台计算机之间通过网络上传/下载文件.然而, FTP 最初的时候并不安全,因为它仅通过用户凭证(用户名和密码)传输数据,没有进行加密. 警 ...

  10. vue中子组件调用父组件里面的数据和方法 父组件调用子组件的数据和方法

    1.子组件直接调用父组件的数据和方法 在父组件father,vue <template> <div> <!-- 父组件里面的数据 --> <p>父组件里 ...