洛谷 P2261 [CQOI2007]余数求和 解题报告
P2261 [CQOI2007]余数求和
题意:
求\(G(n,k)=\sum_{i=1}^n k \ mod \ i\)
数据范围:
\(1 \le n,k \le 10^9\)
\(G(n,k)\)
\(=\sum_{i=1}^n k-i*\lfloor \frac{k}{i} \rfloor\)
\(=n*k-\sum_{i=1}^n i*\lfloor \frac{k}{i} \rfloor\)
显然,\(\lfloor \frac{k}{i} \rfloor\)的分布可能会有重复。
根据除法分块(别在意它只是一个名字),这些值不重复的个数大约是\(\sqrt k\)
我们只需要统计每一块的值即可,注意到值在区间上的出现是单调递增的。
如果我们得到某一块最开始的下标\(l\)(可以从上一块的\(r\)得到),如何推得这一块的\(r\)呢?
其实很简单,\(\frac{k}{l}\)的余数是最大的,而\(\frac{k}{r}\)的余数显然得为0
设\(t=\frac{k}{l}\),则\(r=\frac{k}{t}\)
加上不能越界的判断,完整的即为
\(if \ t==0\)
\(r=n\)
\(else\)
\(r=min(n,\frac{k}{t})\)
对每一块直接统计即可
Code:
#include <cstdio>
#define ll long long
ll min(ll x,ll y){return x<y?x:y;}
ll k,ans,n,l,r,t;
int main()
{scanf("%lld%lld",&n,&k);ans=n*k;l=1;while(r!=n){ll t=k/l;if(!t) r=n;else r=min(n,k/t);ans-=(r+1-l)*(l+r)*t/2;l=r+1;}printf("%lld\n",ans);return 0;
}
2018.7.23
转载于:https://www.cnblogs.com/butterflydew/p/9357073.html
洛谷 P2261 [CQOI2007]余数求和 解题报告相关推荐
- 洛谷 P2261 [CQOI2007]余数求和
题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值,其中k mod i表示k除以i的余数. ...
- P2261 [CQOI2007]余数求和 整除分块
传送门 文章目录 题意: 思路: 题意: n,k≤1e9n,k\le1e9n,k≤1e9 思路: 考虑转换式子,∑i=1nkmodi=∑i=1n(k−⌊ki⌋∗i)=n∗k−∑i=1n⌊ki⌋∗i\s ...
- 【洛谷】P4147 玉蟾宫 解题报告
[洛谷]P4147 玉蟾宫 解题报告 题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N* ...
- 洛谷 [SDOI2015]约数个数和 解题报告
[SDOI2015]约数个数和 题目描述 设\(d(x)\)为\(x\)的约数个数,给定\(N,M\),求$ \sum\limits^N_{i=1}\sum\limits^M_{j=1}d(ij)$ ...
- P2261 [CQOI2007]余数求和
我是题面 题意还是很清晰,很容易理解 1e9范围明显不能暴力,除非你能把常数优化到\(\frac1 {10}\),但我实在想象不到用了这么多取模怎么把常数优化下去 我们可以把\(k\%i\)变成\(k ...
- 洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告
P3539 [POI2012]ROZ-Fibonacci Representation 题意:给一个数,问最少可以用几个斐波那契数加加减减凑出来 多组数据10 数据范围1e17 第一次瞬间yy出做法, ...
- 「洛谷P1343」地震逃生 解题报告
P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...
- 洛谷 P4284 [SHOI2014]概率充电器 解题报告
P4284 [SHOI2014]概率充电器 题目描述 著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- 洛谷 CF1043F Make It One 解题报告
CF1043F Make It One 题意 从一堆数中选择最少的数,使它们的\(\gcd=1\) 输入输出格式 输入格式 第一行:一个正整数\(n\). 第二行:\(n\)个正整数,给出了这个数列. ...
最新文章
- qt: 获取sql数据表的所有的字段;
- linux系统文件的复制,linux操作系统文件复制操作
- 基于深度学习的驾驶行为预测方法
- Cookie禁用了Session还可以用吗?
- UVA 11198 Dancing Digits
- 阶段3 1.Mybatis_03.自定义Mybatis框架_6.自定义Mybatis的编码-实现基于XML的查询所有操作...
- ORCALE常用查询语句
- libcef(一)编译CEF
- java无法验证证书_如何解决“证书无效,不能用于验证本网站的身份”错误?...
- P4294 [WC2008]游览计划
- 二层板的射频RF信号如何控阻抗 四层板的射频RF信号如何控阻抗 射频信号是否可以不控阻抗,射频差分需要控阻抗吗?为什么射频信号需要挖空隔层参考?射频信号为什么要加粗?
- item_get - 获得淘宝商品详情
- 泰坦尼克号预测python_kaggle:泰坦尼克号获救预测_Titanic_EDA##
- 关于“前台根据后台值,操作字段、显示或select选中状态”的几种做法
- sql语句 查询表中 每门课都大于80分的学生名称 根据以下三种 学习sql 中其他函数的使用
- Android之TextView
- 杭电计算机复试面试题库,杭电电子分院历年复试题(整理版).doc
- Zotero文献管理
- 汽车美容快修店如何快速拓客-云上铺汽车管理软件
- 使用xrc的一点心得
热门文章
- 马哥 mysql教学笔记_【马哥linux学员学习笔记】MySQL多实例详解
- html论坛页面怎么做_用php怎么做一个简单的留言页面?
- pycharm 显示空格及tab
- 检查 ubuntu 版本_如何检查Ubuntu版本–快速简便的方法
- python当前日期时间_Python当前日期时间
- spring boot组件_Spring Boot Framework的关键组件和内部
- 用FileZilla创建的Ftp如何使用匿名登录
- 小白如何快速学会C++?
- Java基础篇:什么是FileWriter
- Java基础篇:短路逻辑运算符