【BZOJ1257】余数之和sum,数论练习之取值讨论
传送门
写在前面:之前学长讲过的题目,但我硬是蛋疼了一个小时多
思路: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,数论练习之取值讨论相关推荐
- bzoj 1257: [CQOI2007]余数之和sum 数论
1257: [CQOI2007]余数之和sum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnlin ...
- [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} ...
- bzoj1257: [CQOI2007]余数之和sum
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MB Submit: 2787 Solved: 1278 [Submit][ ...
- bzoj 1257: [CQOI2007]余数之和sum
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MB Submit: 4462 Solved: 2078 [Submit][ ...
- BZOJ 1257 [CQOI2007]余数之和sum 题解
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MB Submit: 1138 Solved: 509 [Submit][S ...
- BZOJ 1257: [CQOI2007]余数之和sum【神奇的做法,思维题】
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MB Submit: 4474 Solved: 2083 [Submit][ ...
- 余数之和(数论、数学题)
题目描述 给出正整数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 ...
- 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, ...
- 2017.3.15 余数之和sum 失败总结
数论题还是不会. 主要是实在搞不清楚一个数和一个连续递增的模数有什么关系.. 唯一能感觉到的是倍数差,但效率不如直接求,感觉这种题一般都和质数有关了 好吧.和质数无关 竟然这么简单. 还真是倍数 ...
最新文章
- 可以打开md_热议MD有病!旭旭宝宝怒斥CG偷开“录像轮播”:人家不开还不行?...
- linux ubuntu基础,linux基础入门详细分析(基于ubuntu)
- Spring Cloud【Finchley】- 21 Spring Cloud Stream 构建消息驱动微服务
- MySql解压版使用
- hdu1428(spfa与记忆化搜索)
- Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
- [Leedcode][JAVA][第837题][新21点][动态规划][数学]
- .net 怎么循环得到数组里的值_HashMap 底层实现、加载因子、容量值及死循环
- 在centos中安装samba 服务
- 马哥python课堂笔记_马哥教育PYTHON相关基础 笔记
- 矩阵分析之 实矩阵分解(3)Cholesky分解
- 8个接私活的网站,只要你有码,那“我”就有钱
- Go dep init失败
- C语言:判断一个数是否为素数/质数
- 【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧
- catkin build 工作空间锁定 —— [build] Error: Unable to find source space `/home/xxx/src`
- 【python】backgroundremover 去除背景
- java虚拟机学习笔记之垃圾收集(下)
- 群联PS3111 MP开卡工具错误代码解释
- java九宫格问题课程设计_课程设计九宫格数独.doc
热门文章
- #华为云·寻找黑马程序员#微服务-你真的懂 Yaml 吗?
- ndoejs中中间件的使用
- 1_初识less引用变量作用域变量差值
- python表达式3and not5的值_表达式 3 and 5 的值为_学小易找答案
- python求解微分方程_python能解微分方程吗
- c#读取solidworks文件_C#初学者教程系列20:Stream流读写
- python把数字阿拉伯数字转换成中文10以内_Python实现把数字转换成中文
- python零基础知识_python 零基础 基本知识
- java文件名命名的规则,Java文件名及其他命名规则
- c++date数据类型_PLC编程设涉及到的数据类型了解一下