题目链接:传送门

题目:

题目背景

数学题,无背景
题目描述 给出正整数n和k,计算G(n, k)=k mod + k mod + k mod + … + k mod n的值,其中k mod i表示k除以i的余数。例如G(, )= mod + mod + mod + mod + mod …… + mod =+++++++++=
输入输出格式
输入格式: 两个整数n k 输出格式: 答案 输入输出样例
输入样例#: 输出样例#: 说明 %: n,k <= %: n,k <= ^ % n,k <= ^

思路:

有两点:(以下的除法都表示整数除法)

  ① k%n = k - k/n*n;

  ② 对于任意的正整数k,k/x的值的数量是√k级别的(1 ≤ x ≤ n)。

枚举k/x的值,则对于所有k/x的值相同的x,对应的k/x*x为一个公差为k/x的等差数列,用公式可以O(1)求出和。

总复杂度为O(√k)

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
#define min(a, b) a<b?a:b ll N, k, ans;
int main()
{
cin >> N >> k;
ans = N*k;
for (int x = , gx; x <= N; x = gx+) {
gx = k/x ? min(k/(k/x), N) : N;
ans -= (k/x) * (x+gx) * (gx-x+) / ;
}
cout << ans << endl;
return ;
}

P2261 [CQOI2007]余数求和 (数论)的更多相关文章

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

    题目传送门 余数求和 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod ...

  2. LUOGU P2261 [CQOI2007]余数求和(数论分块)

    传送门 解题思路 数论分块,首先将 \(k\%a\) 变成 \(k-a*\left\lfloor\dfrac{k}{a}\right\rfloor\)形式,那么\(\sum\limits_{i=1}^ ...

  3. 洛谷 P2261 [CQOI2007]余数求和 解题报告

    P2261 [CQOI2007]余数求和 题意: 求\(G(n,k)=\sum_{i=1}^n k \ mod \ i\) 数据范围: \(1 \le n,k \le 10^9\) \(G(n,k)\ ...

  4. 洛谷——P2261 [CQOI2007]余数求和

    P2261 [CQOI2007]余数求和 关键在于化简公式,题目所求$\sum_{i=1}^{n}k\mod i$ 简化式子,也就是$\sum_{i=1}^{n}(k-\frac{k}{i}\time ...

  5. [Luogu P2261] [CQOI2007]余数求和 (取模计算)

    题面 传送门:https://www.luogu.org/problemnew/show/P2261 Solution 这题显然有一个O(n)的直接计算法,60分到手. 接下来我们就可以拿出草稿纸推一 ...

  6. P2261 [CQOI2007]余数求和 【整除分块】

    一.题面 P2261 [CQOI2007]余数求和 二.分析 参考文章:click here 对于整除分块,最重要的是弄清楚怎样求的分得的每个块的范围. 假设$ n = 10 ,k = 5 $ $$  ...

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

    洛谷题目链接:[CQOI2007]余数求和 题目背景 数学题,无背景 题目描述 给出正整数n和k,计算G(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n ...

  8. 洛谷 P2261 [CQOI2007]余数求和 ||整除(数论)分块

    参考:题解 令f(i)=k%i,[p]表示不大于p的最大整数f(i)=k%i=k-[k/i]*i令q=[k/i]f(i)=k-qi如果k/(i+1)=k/i=qf(i+1)=k-q(i+1)=k-qi ...

  9. 【洛谷】P2261 [CQOI2007]余数求和

    题面?? 点我获得题面QAQ 我这个咕儿终于在csp初赛前夕开始学习数论了! 我是绝对不会承认之前不学数学是因为去年刚开始学OI的时候就跟yyq他们学莫比乌斯反演然后自闭的 分析 对于k mod i, ...

随机推荐

  1. c++ 软件版本比较函数

    // 版本号拆分为数组 void splitToInt(string str , vector<int> *v1, char delim ){ // 拆分 string strTmp; s ...

  2. 外部调用mvc的api方法时,如何解决跨域请求问题?

    首先,创建一个mvc项目(包含webapi),我们模拟一个场景 1)在项目的Controller 创建一个WeiXinApiController public class WeiXinApiContr ...

  3. Python之路-python基础二

    本章内容:      一.编码格式      二.常用数据类型      三.字符串常用方法      四.列表常用方法  五.数据运算      六.课后作业 编码格式:       ASCII A ...

  4. bzoj2946

    题解: 和poj1226差不多 把翻转去掉 然后不要忘记开大数组和二分的上限答案 代码: #include<bits/stdc++.h> using namespace std; type ...

  5. SQL-19 查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工

    题目描述 查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工CREATE TABLE `departments` (`dept_no` c ...

  6. 谷歌开源的TensorFlow Object Detection API视频物体识别系统实现(一)[超详细教程] ubuntu16.04版本

    谷歌宣布开源其内部使用的 TensorFlow Object Detection API 物体识别系统.本教程针对ubuntu16.04系统,快速搭建环境以及实现视频物体识别系统功能. 本节首先介绍安 ...

  7. Java流对象理解

    马士兵老师,曾在Java的学习过程中,将Java的流比作管道,认为很贴切,在此笔者也建议读者在学习过程中作类似比喻,形象化的学习 Java根据数据流向的不同分为输入流和输出流: Java根据处理数据类 ...

  8. netty ------------ 如果selector检测到一个channel可以读了

    -----------------一个NioEventLoopGroup 的初始化的时候,会初始化一个 NioEventLoop数组,每个NioEventLoop在初始化的时候,会open一个sele ...

  9. day 50 JS框架基础

    一 JavaScript的历史1 Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本 ...

  10. 使用Redis做为MySQL的缓存

    OS: Ubuntu 16.04.4 x64 更新并安装必要的工具 apt update && apt upgrade -y && apt dist-upgrade - ...