传送门
写在前面:之前学长讲过的题目,但我硬是蛋疼了一个小时多
思路:50分随便暴力,100分看到10^9范围的数论题,应该就有两种较为常见的方法应对
1.存在某种特定的关系,甚至可以在O(1)的时间内搞出来
2.存在一些相同情况,最终可优化为√n或log级别
(不管怎么样,我们可以打表找一下规律什么的,没准就有灵感了)
这道题就是求Σ(k−⌊k/i⌋∗i)i=1..nΣ(k-⌊k/i⌋*i){i=1..n}简化一下是n∗k−Σ(⌊k/i⌋∗i)i=1..nn*k-Σ(⌊k/i⌋*i)i=1..n,显然我们可以发现⌊k/i⌋的取值是一个不上升序列,且有很多取值相同(事实上,⌊k/i⌋的取值只有√k个),那么我们就可以对i中的一段区间求和(这段区间内⌊k/i⌋取值相同),⌊k/i⌋相同且i单调增加1,可以直接算出来,时间复杂度O(√k)
注意:
1.至于实现方法,我确实想了很久,最后想出来一种可能比较奇怪的转移,代码中l>r,且l为一段⌊k/i⌋取值相同的区间中最右端的数,r为最左端的数,p是这一段区间中⌊k/i⌋的取值,最后就莫名其妙地搞出来了
2.循环中注意l始终不能为0,不然将除0报错

#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL n,k,p,l,r,ans;
main()
{scanf("%lld%lld",&n,&k);l=n;p=k/n;while (l){r=k/(p+1)+1;ans+=(l+r)*(l-r+1)/2*p;l=r-1;if (!l) break; p=k/l;}printf("%lld",k*n-ans);
}

【BZOJ1257】余数之和sum,数论练习之取值讨论相关推荐

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

    1257: [CQOI2007]余数之和sum Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnlin ...

  2. [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} ...

  3. bzoj1257: [CQOI2007]余数之和sum

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 2787  Solved: 1278 [Submit][ ...

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

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 4462  Solved: 2078 [Submit][ ...

  5. BZOJ 1257 [CQOI2007]余数之和sum 题解

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1138  Solved: 509 [Submit][S ...

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

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

  7. 余数之和(数论、数学题)

    题目描述 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值. 例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 ...

  8. BZOJ-1257-[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, ...

  9. 2017.3.15 余数之和sum 失败总结

    数论题还是不会. 主要是实在搞不清楚一个数和一个连续递增的模数有什么关系.. 唯一能感觉到的是倍数差,但效率不如直接求,感觉这种题一般都和质数有关了 好吧.和质数无关    竟然这么简单. 还真是倍数 ...

最新文章

  1. 可以打开md_热议MD有病!旭旭宝宝怒斥CG偷开“录像轮播”:人家不开还不行?...
  2. linux ubuntu基础,linux基础入门详细分析(基于ubuntu)
  3. Spring Cloud【Finchley】- 21 Spring Cloud Stream 构建消息驱动微服务
  4. MySql解压版使用
  5. hdu1428(spfa与记忆化搜索)
  6. Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
  7. [Leedcode][JAVA][第837题][新21点][动态规划][数学]
  8. .net 怎么循环得到数组里的值_HashMap 底层实现、加载因子、容量值及死循环
  9. 在centos中安装samba 服务
  10. 马哥python课堂笔记_马哥教育PYTHON相关基础 笔记
  11. 矩阵分析之 实矩阵分解(3)Cholesky分解
  12. 8个接私活的网站,只要你有码,那“我”就有钱
  13. Go dep init失败
  14. C语言:判断一个数是否为素数/质数
  15. 【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧
  16. catkin build 工作空间锁定 —— [build] Error: Unable to find source space `/home/xxx/src`
  17. 【python】backgroundremover 去除背景
  18. java虚拟机学习笔记之垃圾收集(下)
  19. 群联PS3111 MP开卡工具错误代码解释
  20. java九宫格问题课程设计_课程设计九宫格数独.doc

热门文章

  1. #华为云·寻找黑马程序员#微服务-你真的懂 Yaml 吗?
  2. ndoejs中中间件的使用
  3. 1_初识less引用变量作用域变量差值
  4. python表达式3and not5的值_表达式 3 and 5 的值为_学小易找答案
  5. python求解微分方程_python能解微分方程吗
  6. c#读取solidworks文件_C#初学者教程系列20:Stream流读写
  7. python把数字阿拉伯数字转换成中文10以内_Python实现把数字转换成中文
  8. python零基础知识_python 零基础 基本知识
  9. java文件名命名的规则,Java文件名及其他命名规则
  10. c++date数据类型_PLC编程设涉及到的数据类型了解一下