【bzoj1257】[CQOI2007]余数之和sum 数论
题目描述
给出正整数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
输入
输入仅一行,包含两个整数n, k。
输出
输出仅一行,即j(n, k)。
样例输入
5 3
样例输出
7
题解
分块
首先当i>k时,k%i=k,所以如果n>k,直接把答案预先加上(n-k)*k,再把n变成k计算即可。
然后就是求 ∑(k%i)(1≤i≤n) 的问题。
考虑到 k%i=k-i*(k/i) ,于是所求即为∑(k-i*(k/i))(1≤i≤n) = n*k-∑(i*(k/i))(1≤i≤n) 。
这里注意到对于某一个k/i=x的x,能够满足条件i必然是连续的一段。
那么就可以分块来做。
对于每个i=last+1,总有last'=min(n,k/(k/i)),满足在且仅在[i,last']区间内的值j符合k/j=k/i。
然后用一下等差数列求和公式快速求出i~last'的和,再乘上k/i加到答案中即可。
#include <cstdio>
#define min(a , b) a < b ? a : b;
int main()
{
long long n , k , i , last , ans = 0;
scanf("%lld%lld" , &n , &k);
if(n > k) ans = (n - k) * k , n = k;
ans += n * k;
for(i = 1 ; i <= n ; i = last + 1)
{
last = min(n , k / (k / i));
ans -= (k / i) * (i + last) * (last - i + 1) / 2;
}
printf("%lld\n" , ans);
return 0;
}
【bzoj1257】[CQOI2007]余数之和sum 数论的更多相关文章
- BZOJ 1257: [CQOI2007]余数之和sum( 数论 )
n >= k 部分对答案的贡献为 k * (n - k) n < k 部分贡献为 ∑ (k - ⌊k / i⌋ * i) = ∑ , ⌊k / i⌋ 相等的数是连续的一段, 此时这段连 ...
- bzoj千题计划173:bzoj1257: [CQOI2007]余数之和sum
http://www.lydsy.com/JudgeOnline/problem.php?id=1257 k%i=k-int(k/i)*i 除法分块,对于相同的k/i用等差序列求和来做 #includ ...
- bzoj1257: [CQOI2007]余数之和sum(数论)
非常经典的题目... 要求 则有 实际上 最多只有2*sqrt(k)种取值,非常好证明 因为>=sqrt(k)的数除k下取整得到的数一定<=sqrt(k),而k除以<=sqrt(k) ...
- BZOJ1257 [CQOI2007]余数之和sum
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- [BZOJ1257][CQOI2007]余数之和sum 数学+分块
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1257 题目所求为$$Ans=\sum_{i=1}^nk%i$$ 将其简单变形一下$$Ans ...
- 【bzoj1257】[CQOI2007]余数之和sum
[bzoj1257][CQOI2007]余数之和sum 2014年9月1日1,9161 Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod ...
- 1257: [CQOI2007]余数之和sum
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 2001 Solved: 928[Submit][Sta ...
- BZOJ 1257: [CQOI2007]余数之和sum
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 3769 Solved: 1734[Submit][St ...
- bzoj 1257: [CQOI2007]余数之和sum 数学 && 枚举
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 1779 Solved: 823[Submit][Sta ...
随机推荐
- git 错误 RPC
remote: Enumerating objects: 3772, done. error: RPC failed; curl 18 transfer closed with outstanding ...
- (转)阿里巴巴Druid数据源及使用
原文链接:https://blog.csdn.net/yanguo110/article/details/68944659 第一部分:数据源的集中比较. 目前常用的数据源主要有c3p0.dbcp.pr ...
- 国内maven库链接地址,链接阿里的库,下载很快!!!
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http:/ ...
- 网络基础,tpc,udp
一 , 网络基础相关知识 1. 架构 (重点) C / S 架构 : client 客户端(APP) 和 server 服务器端 能充分发挥pc机的性能 B / S 架构 : browser 浏览器 ...
- C语言数据结构(二)
算法和算法的衡量 一.算法 算法是为了解决某类问题而规定的一个有限长的操作序列.一个算法必须满足以下五个重要特性: 1.有穷性 对于任意一组合法输入值,在执行又穷步骤之后一定能结束,即:算法中的每 ...
- CSS3不一样的下拉选择框
本例中包含两个下拉选择框的动画示例,本例中并未使用select标签.本例中第一个案例也可用于标题.导航栏等位置. 案例一: html布局 <div class="content&quo ...
- 单服务器最大tcp连接数及调优汇总
启动线程数: 启动线程数=[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数 最佳启动线程数和CPU内核数量成正比,和IO阻塞时间成反比.如果任务都是CPU计算型任务,那么线程数最多不超过 ...
- leetcode笔记--1 two-sum
my answer: 出现的问题:倒数第二行and i !=s这种情况没有考虑进去,以后要思考全面些
- 『Golang』MongoDB在Golang中的使用(mgo包)
有关在Golang中使用mho进行MongoDB操作的最简单的例子.
- 各种网站,app的手机号绑定真坑爹
各种网站,app的手机号绑定真坑爹,无力吐槽,哎