题目链接:余数之和

题意:给定正整数$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. 2019牛客竞赛第六场D Move 宏观单调,部分不单调

    Move 题意 有k个体积相同的箱子,有个憨憨有固定的装箱策略,每次都只装可以装的重量中最大的东西,求箱子的最小提及 分析 看起来可以二分,但由于他的装箱策略有点蠢,所以只在宏观上满足单调性,在特别小 ...

  2. linux命令 mv

    后缀--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份: -b:当文件存在时,覆盖前,为其创建一个备份: -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目 ...

  3. 番外:克隆本地PDB中其他参数和子句的说明

    基于版本:19c (12.2.0.3) AskScuti 创建方法:克隆本地PDB(从本地其他PDB创建新的PDB) 对应路径:Creating a PDB --> Cloning --> ...

  4. 《Java程序设计》第十一周学习总结

    20175334 <Java程序设计>第十一周学习总结 教材学习内容总结 第十三章 URL类 一个URL对象通常包含最基本的三部分信息:协议.地址.资源. URL对象调用 InputStr ...

  5. Python3标准库:string通用字符串操作

    1. string:通用字符串操作 string模块在很早的Python版本中就有了.以前这个模块中提供的很多函数已经移植为str对象的方法,不过这个模块仍保留了很多有用的常量和类来处理str对象. ...

  6. codeforces Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid

    #include<bits/stdc++.h> using namespace std ; int n; struct City { int id; long long x,y; //坐标 ...

  7. linux下grep分析apache日志的命令集合

    https://my.oschina.net/hmc0316/blog/112004 实例:月份英文简写英文全称一月Jan.January二月Feb.February三月Mar.March四月Apr. ...

  8. linux下删除空行的几种方法

    在查看linux下的配置文件时,为了便于一目了然的查看,经常会删除空行和#头的行.而linux在删除空行的方法很多,grep.sed.awk.tr等工具都能实现.现总结如下: 1.grep grep ...

  9. 美多商城后台MIS系统部署之Nginx配置

    先进入Nginx的配置文件中,进行配置. Nginx配置文件夹的区别: cd /etc/nginx/conf.d/   创建.conf后缀的文件 /etc/nginx/sites-enabled  创 ...

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

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