【bzoj1257】[CQOI2007]余数之和sum 数论乱搞
来源:互联网 发布:淘宝客服售前售后要点 编辑:程序博客网 时间:2024/05/24 04:37
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。
Output
输出仅一行,即j(n, k)。
Sample Input
5 3
Sample Output
7
HINT
50%的数据满足:1<=n, k<=1000 100%的数据满足:1<=n ,k<=10^9
Source
数论
k%i可以写成k-k/i*i,所以重点在求
打表可得,当i逐渐增大时,
设连续区间为[l,r],区间内的值为w,则需满足
因为我们要枚举区间,所以l的值可以确定。
因为
这样在当前区间内,w的值就确定了,区间大小也确定了。因为要乘i,所以当前区间就是公差为w的等差数列。当前区间对答案的贡献为:
最终答案是:
代码:
#include<cstring>#include<cstdio>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;int main(){ LL n,k; scanf("%lld%lld",&n,&k); LL ans = (LL)n * k; if(n > k) n = k; // if i>k k/i=0 for(LL i = 1,l,r,w;i <= n;i = r + 1) { w = k / i; l = i; r = k / w; if(r > n) r = n; ans -= (r - l + 1) * w * (l + r) / 2; } printf("%lld",ans); return 0;}
0 0
- 【bzoj1257】[CQOI2007]余数之和sum 数论乱搞
- [BZOJ1257][CQOI2007]余数之和sum(数论)
- bzoj1257: [CQOI2007]余数之和sum(数论)
- bzoj1257[CQOI2007]余数之和sum 数论
- BZOJ1257 [CQOI2007]余数之和sum
- bzoj1257: [CQOI2007]余数之和sum
- [BZOJ1257][CQOI2007]余数之和sum
- bzoj1257: [CQOI2007]余数之和sum
- Bzoj1257[CQOI2007]余数之和sum
- [bzoj1257][CQOI2007]余数之和sum
- 【bzoj1257】【CQOI2007】【余数之和】【sum】
- BZOJ1257: [CQOI2007]余数之和sum
- 【bzoj1257】[CQOI2007]余数之和sum
- bzoj1257[CQOI2007] 余数之和sum
- 【bzoj1257】[CQOI2007]余数之和sum
- bzoj1257: [CQOI2007]余数之和sum
- 【bzoj1257】[CQOI2007]余数之和sum
- bzoj1257 [CQOI2007]余数之和sum
- Object-C--->Swift之(四)强大的Switch
- 阻塞socket学习-整理笔记
- CF Dinner with Emma 616B
- Swift中对闭包的理解
- iOS中的动画-简单介绍
- 【bzoj1257】[CQOI2007]余数之和sum 数论乱搞
- scala 解析
- myeclipse从数据库反射生成实体类和映射文件
- Android添加快捷方式
- 批处理创建cocos
- Tomcat中使用JNDI引用外部资源
- Ubuntu下无法联网的一种解决办法
- How to load Properties file from a static block or static method
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件