BZOJ 1257 - 余数之和 - [CQOI2007]
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1257
题意:
给定正整数 $n,k$,求 $(k \bmod 1) + (k \bmod 2) + \cdots + (k \bmod n) = \sum_{i=1}^{n}(k \bmod i)$ 的值。
题解:
显然 $k \bmod i = k - \lfloor k/i \rfloor \times i$,因此 $\sum_{i=1}^{n}(k \bmod i) = \sum_{i=1}^{n}(k - \lfloor k/i \rfloor \times i) = n \cdot k - \sum_{i=1}^{n}(\lfloor k/i \rfloor \times i)$。
对于任意正整数 $x \in [1,k]$, 设 $g(x) = \lfloor \frac{k}{\lfloor k/x \rfloor} \rfloor$,不难得出 $\lfloor k/x \rfloor \le k/x \Rightarrow \frac{k}{\lfloor k/x \rfloor} \ge \frac{k}{k/x} \Rightarrow \lfloor \frac{k}{\lfloor k/x \rfloor} \rfloor \ge \lfloor \frac{k}{k/x} \rfloor$,即 $g(x) \ge \lfloor \frac{k}{k/x} \rfloor = \lfloor x \rfloor = x$。
又根据 $f(x) = \frac{k}{x}$ 是一个单调递减函数,得到
$f(g(x)) \le f(x) \Rightarrow \frac{k}{g(x)} \le \frac{k}{x} \Rightarrow \lfloor \frac{k}{g(x)} \rfloor \le \lfloor \frac{k}{x} \rfloor$
另一方面,根据 $g(x) \le \frac{k}{\lfloor k/x \rfloor}$ 还能得出

因此,综上可以得出 $\lfloor \frac{k}{g(x)} \rfloor = \lfloor \frac{k}{x} \rfloor$;也就是说,对于任意的正整数 $i \in [x,g(x)]$,$\lfloor \frac{k}{i} \rfloor$ 都是相等的。
而与此同时,对于任意的正整数 $i \in [1,k]$,$\lfloor \frac{k}{i} \rfloor$ 的值最多只有 $2 \sqrt{k}$ 个,这是因为:
当 $i \le \sqrt{k}$ 时,$i$ 最多只有 $\sqrt{k}$ 个选择,相对应地,$\lfloor \frac{k}{i} \rfloor$ 也就最多 $\sqrt{k}$ 个值;而当 $i > \sqrt{k}$ 时,$\lfloor \frac{k}{i} \rfloor \le \frac{k}{i} < \sqrt{k}$,即 $\lfloor \frac{k}{i} \rfloor$ 只能取 $1 \sim \sqrt{k}$ 之间的值。
所以,对于任意的正整数 $i \in [1,k]$,$\lfloor \frac{k}{i} \rfloor$ 的值划分成 $O(\sqrt{k})$ 段。每一段上 $i \in [x,g(x)]$,$\lfloor \frac{k}{i} \rfloor$ 的值都等于 $\lfloor \frac{k}{x} \rfloor$。而在这一段中,$\sum_{i=x}^{g(x)}(\lfloor k/i \rfloor \times i) = \lfloor k/x \rfloor \sum_{i=x}^{g(x)}i$,即一个等差数列的求和。因此这个算法时间复杂度为 $O(\sqrt{k})$。
AC代码:
/**************************************************************
Problem: 1257
User: Dilthey
Language: C++
Result: Accepted
Time:20 ms
Memory:1288 kb
****************************************************************/ #include<bits/stdc++.h>
using namespace std;
typedef long long ll; ll n,k,ans;
inline ll g(ll x){return k/(k/x);}
inline ll sum(ll L,ll R){return (L+R)*(R-L+)/;}
int main()
{
while(cin>>n>>k)
{
ll ans=n*k;
n=min(n,k);
for(ll x=;x<=n;x=g(x)+)
{
ll y=min(g(x),n);
ans-=(k/x)*sum(x,y);
}
cout<<ans<<endl;
}
}
BZOJ 1257 - 余数之和 - [CQOI2007]的更多相关文章
- BZOJ - 1257 余数之和(数学)
题目链接:余数之和 题意:给定正整数$n$和$k$,计算$k\%1+k\%2+\dots+k\%n$的值 思路:因为$k\%i=k-\left \lfloor \frac{k}{i} \right \ ...
- BZOJ 1257 余数之和
Description 给出正整数\(n\)和\(k\),计算\(j(n, k)=k\;mod\;1\;+\;k\;mod\;2\;+\;k\;mod\;3\;+\;-\;+\;k\;mod\;n\) ...
- BZOJ 1257 余数之和sum
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1257 题意:计算sigama(m%i)(1<=i<=n). 思路: 这样就简 ...
- [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} ...
- bzoj 1257 余数之和 —— 数论分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 \( \sum\limits_{i=1}^{n}k\%i = \sum\limits_ ...
- BZOJ 1257 余数之和 题解
题面 这道题是一道整除分块的模板题: 首先,知道分块的人应该知道,n/i最多有2*sqrt(n)种数,但这和余数有什么关系呢? 注意,只要n/i的值和n/(i+d)的值一样,那么n%i到n%(i+d) ...
- BZOJ 1257 余数之和sum(分块优化)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=46954 题意:f(n, k)=k mod 1 + k mod 2 ...
- 【BZOJ1257】【CQOI2007】余数之和sum
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, ...
- Bzoj 1257 [CQOI2007]余数之和 (整除分块)
Bzoj 1257 [CQOI2007]余数之和 (整除分块) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 一道简单题. 题目 ...
随机推荐
- Win10 自定义右键新建菜单
Win10 自定义右键新建菜单 regedit打开: 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ ...
- struts2简单入门-配置文件-struts.xml
struts.xml 作用:配置struts中的action,result,package,全局action,result,等等. 基本文件格式: <?xml version="1.0 ...
- C#处理非托管资源
using System; //处理非托管资源 //例如:文件句柄.网络连接.数据库连接 //实现IDisposable不意味着也应该实现一个终结器,终结器会带来额外开销 //发布本机资源,要释放本机 ...
- 论文阅读笔记:《Contextual String Embeddings for Sequence Labeling》
文章引起我关注的主要原因是在CoNLL03 NER的F1值超过BERT达到了93.09左右,名副其实的state-of-art.考虑到BERT训练的数据量和参数量都极大,而该文方法只用一个GPU训了一 ...
- 搬运,B站up主『凉风有性胖次君』日日日日日日日日日日在校园
这个视频超有毒,简直丧心病狂,我竟无言以对,凉风是有多大的耐性,搜集了这么多元素,哈哈哈~~~赶紧搬运,怕哪天B站都给封了 也就是说世界本来喜欢的是言叶,但是言叶爱上了一直在电车上暗恋她的诚哥,于是世 ...
- zabbix批量监控域名下nginx的访问50x状态码数量
背景: 购物车相关的站点某些页面经常出现502,如果超过一些阈值则需要报警给管理员知道 .自动发现脚本的编写 # vim /usr/local/zabbix_agents_3.2.0/scripts/ ...
- jenkins结合gitlab实现提交代码自动构建
jenkins可以说是现在非常流行的一个继续集成工具,几乎所有的公司都在用,并且它也基本是devops的连接者,是一个比较核心的工具. 主要记录以下两个: 利用jenkins和gitlab的webho ...
- Intsall The Nessus in you kali linux
1.first you shold download the nessus on the web station the nessus download site url: https://www. ...
- django---不使用view,直接从Url转到html
这个在使用公告页时,就很方便. 因为无需要经过数据库,视图. 直接使用文字. https://docs.djangoproject.com/en/2.1/topics/class-based-view ...
- 加载Assetbundle需要注意的地方
WWW:异步实现,手机上不能用于同步代码,需要监测其完成状态.不用www.dispose. CreateFromFile:阻塞,但是移动平台上面的路径格式有点坑,没时间看,不用. 以下两个方式需要先使 ...