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]余数求和 解题报告相关推荐

  1. 洛谷 P2261 [CQOI2007]余数求和

    题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值,其中k mod i表示k除以i的余数. ...

  2. P2261 [CQOI2007]余数求和 整除分块

    传送门 文章目录 题意: 思路: 题意: n,k≤1e9n,k\le1e9n,k≤1e9 思路: 考虑转换式子,∑i=1nkmodi=∑i=1n(k−⌊ki⌋∗i)=n∗k−∑i=1n⌊ki⌋∗i\s ...

  3. 【洛谷】P4147 玉蟾宫 解题报告

    [洛谷]P4147 玉蟾宫 解题报告 题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N* ...

  4. 洛谷 [SDOI2015]约数个数和 解题报告

    [SDOI2015]约数个数和 题目描述 设\(d(x)\)为\(x\)的约数个数,给定\(N,M\),求$ \sum\limits^N_{i=1}\sum\limits^M_{j=1}d(ij)$ ...

  5. P2261 [CQOI2007]余数求和

    我是题面 题意还是很清晰,很容易理解 1e9范围明显不能暴力,除非你能把常数优化到\(\frac1 {10}\),但我实在想象不到用了这么多取模怎么把常数优化下去 我们可以把\(k\%i\)变成\(k ...

  6. 洛谷 P3539 [POI2012]ROZ-Fibonacci Representation 解题报告

    P3539 [POI2012]ROZ-Fibonacci Representation 题意:给一个数,问最少可以用几个斐波那契数加加减减凑出来 多组数据10 数据范围1e17 第一次瞬间yy出做法, ...

  7. 「洛谷P1343」地震逃生 解题报告

    P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...

  8. 洛谷 P4284 [SHOI2014]概率充电器 解题报告

    P4284 [SHOI2014]概率充电器 题目描述 著名的电子产品品牌SHOI 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  9. 洛谷 CF1043F Make It One 解题报告

    CF1043F Make It One 题意 从一堆数中选择最少的数,使它们的\(\gcd=1\) 输入输出格式 输入格式 第一行:一个正整数\(n\). 第二行:\(n\)个正整数,给出了这个数列. ...

最新文章

  1. qt: 获取sql数据表的所有的字段;
  2. linux系统文件的复制,linux操作系统文件复制操作
  3. 基于深度学习的驾驶行为预测方法
  4. Cookie禁用了Session还可以用吗?
  5. UVA 11198 Dancing Digits
  6. 阶段3 1.Mybatis_03.自定义Mybatis框架_6.自定义Mybatis的编码-实现基于XML的查询所有操作...
  7. ORCALE常用查询语句
  8. libcef(一)编译CEF
  9. java无法验证证书_如何解决“证书无效,不能用于验证本网站的身份”错误?...
  10. P4294 [WC2008]游览计划
  11. 二层板的射频RF信号如何控阻抗 四层板的射频RF信号如何控阻抗  射频信号是否可以不控阻抗,射频差分需要控阻抗吗?为什么射频信号需要挖空隔层参考?射频信号为什么要加粗?
  12. item_get - 获得淘宝商品详情
  13. 泰坦尼克号预测python_kaggle:泰坦尼克号获救预测_Titanic_EDA##
  14. 关于“前台根据后台值,操作字段、显示或select选中状态”的几种做法
  15. sql语句 查询表中 每门课都大于80分的学生名称 根据以下三种 学习sql 中其他函数的使用
  16. Android之TextView
  17. 杭电计算机复试面试题库,杭电电子分院历年复试题(整理版).doc
  18. Zotero文献管理
  19. 汽车美容快修店如何快速拓客-云上铺汽车管理软件
  20. 使用xrc的一点心得

热门文章

  1. 马哥 mysql教学笔记_【马哥linux学员学习笔记】MySQL多实例详解
  2. html论坛页面怎么做_用php怎么做一个简单的留言页面?
  3. pycharm 显示空格及tab
  4. 检查 ubuntu 版本_如何检查Ubuntu版本–快速简便的方法
  5. python当前日期时间_Python当前日期时间
  6. spring boot组件_Spring Boot Framework的关键组件和内部
  7. 用FileZilla创建的Ftp如何使用匿名登录
  8. 小白如何快速学会C++?
  9. Java基础篇:什么是FileWriter
  10. Java基础篇:短路逻辑运算符