感觉做法很神奇……想不到啊qwq

题目:

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, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7

Input

输入仅一行,包含两个整数n, k。
1<=n ,k<=10^9

Output

输出仅一行,即j(n, k)。

Sample Input

5 3

Sample Output

7
 
第一步,每个数x对ans的贡献为:k - k / x * x,所以ans = n * k - Σ(int)(k / x) * x;而怎样小于O(n)地求Σ里的一串呢?只好用数学知识压缩计算范围。
 
第二步,存在g(x) = (int)(k / (int)(k / x)),(如果没有int的取下界那gx就是x了,以下gx不写括号了啊),gx >= (int)(k / (k / x)) == (int)x == x,因此进一步有(int)(k / gx) <= (int)(k / x)(想一想为什么)。
 
第三步,(int)(k / gx) >= (int)(k / (k / (int)(k / x))) == (int)(k / x)。这个结论与第二步末尾结合一下可得,(int)(k / gx) == (int)(k / x)。这个推论就很重要了,意味着对于i∈[x, gx],(int)(k / i)都是一样的,而我们要求的Σ里面那一坨,不过就是(int)(k / i) * i,那[x, gx]就是等差数列了,可以O(1)算出这一区间的值,而不是遍历。
 
第四步,如此,遍历的将是区间[1, g(1))],[g(1)+1, g(g(1)+1)],……那这样的区间有多少个?复杂度可以承受吗?回答是,最多有2√k个区间。x <= √k时,最多只有√k个取值;x > √k时,考虑每个区间的“特征值”(int)(k / x) < √k,因此区间的个数还是小于√k。至于x > k时,都是k / x都是0了……
 
 #include <cstdio>
#include <algorithm>
#define ll long long
#define R(x) scanf("%lld", &x)
#define W(x) printf("%lld\n", x) int main() {
ll n, k;
R(n), R(k); ll ans = n * k;
for (int i = , gx; i <= n; i = gx + ) {
gx = k / i ? std::min(k / (k / i), n) : n;
ans -= (k / i) * (gx - i + ) * (i + gx) / ;
} W(ans);
}

BZOJ1257(数论知识)的更多相关文章

  1. RSA算法原理——(2)RSA简介及基础数论知识

    上期为大家介绍了目前常见加密算法,相信阅读过的同学们对目前的加密算法也算是有了一个大概的了解.如果你对这些解密算法概念及特点还不是很清晰的话,昌昌非常推荐大家可以看看HTTPS的加密通信原理,因为HT ...

  2. 数论知识总结——史诗大作(这是一个flag)

    1.快速幂 计算a^b的快速算法,例如,3^5,我们把5写成二进制101,3^5=3^1*1+3^2*2+3^4*1 ll fast(ll a,ll b){ll ans=;,a=mul(a,a)))a ...

  3. 【五一qbxt】day4 数论知识

    这些东西大部分之前都学过了啊qwq zhx大概也知道我们之前跟着他学过这些了qwq,所以: 先讲新的东西qwq:(意思就是先讲我们没有学过的东西) 进制转换 10=23+21=1010(2) =32+ ...

  4. bzoj 1951 [Sdoi2010]古代猪文(数论知识)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...

  5. bzoj 2242 [SDOI2011]计算器(数论知识)

    Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...

  6. 清北澡堂 Day2 下午 一些比较重要的数论知识整理

    1.欧拉定理 设x1,x2,.....,xk,k=φ(n)为1~n中k个与n互质的数 结论一:axi与axj不同余 结论二:gcd(axi,n)=1 结论三:x1,x2,...,xk和ax1,ax2, ...

  7. Codeforces Round #382 Div. 2【数论】

    C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...

  8. [BZOJ1951][SDOI2005]古代猪文(数论好题)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1951 分析: 练习数论知识的好题,涉及到费马小定理.lucas定理.求逆元

  9. USACO4.12Beef McNuggets(背包+数论)

    昨天晚上写的一题 结果USACO一直挂中 今天交了下 有一点点的数论知识  背包很好想 就是不好确定上界 官方题解: 这是一个背包问题.一般使用动态规划求解. 一种具体的实现是:用一个线性表储存所有的 ...

随机推荐

  1. 官方文档Core Technologies - Part 1

    首先介绍系列文章内容及Spring Framework官方文档情况. 在这一系列学习中,我阅读的主要资源是5.1.2 Reference Doc.,以及论坛大神的讲解blog.另外,Spring官方也 ...

  2. uni-app 创建的第一个应用

    本人微信公众号:前端修炼之路,欢迎关注 背景介绍 经过上一篇文章uni-app官方教程学习手记的学习之后,我就着手做这个项目了. 目前已经初步搭出了整体的框架,秉着取之于社会,回馈于社会的原则,我将这 ...

  3. 最简单ajax,$.post()用法

    最简单的ajax,$.post()用法 $.post("action.php",{'email':$('#email').val(),'address':$('#address') ...

  4. SCAU 1138 代码等式 并查集

    1138 代码等式[附加题] 该题有题解 时间限制:500MS  内存限制:65536K 提交次数:59 通过次数:21 题型: 编程题   语言: G++;GCC Description 一个代码等 ...

  5. Java对象的初始化

    昨天写的代码被殷老师诟病了,因为太「丑陋」. 原来我的代码结构是这样的: public class ColorRocognizer { ..... public static void main(St ...

  6. POJ1236 Network of Schools (强连通分量,注意边界)

    A number of schools are connected to a computer network. Agreements have been developed among those ...

  7. Python 黑帽子第二章运行截图

  8. MongoDB复制集成员及架构介绍(一)

    MongoDB复制集介绍 MongoDB支持在多个机器中通过异步复制达到提供了冗余,增加了数据的可用性.MongoDB有两种类型的复制,第一种是同于MySQL的主从复制模式(MongoDB已不再推荐此 ...

  9. POJ3261(后缀数组+2分枚举)

    Milk Patterns Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 12972   Accepted: 5769 Ca ...

  10. 创建calico网络报错client response is invalid json

    使用docker创建calico网络失败. # docker network create --driver calico --ipam-driver calico-ipam testcalico E ...