【技♂巧】bzoj1257余数之和
2015-11-26 15:36
183 查看
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1257
题目大意:
求
最近在学数论这种东西……
分析可得:
然后呢?
对于N>K的部分,K mod i等于K
剩下的部分,由于K/i是向下取整的,所以K/i的值共有sqrt(k)种,分别是1,2,3,4……k
然后可以把k/i相同的项提取出来,剩下的sum=(l)+(l+1)+(l+2)+(l+3)……+(r-1)+(r),由于是个等差数列可以直接得出公式sum=(r-l+1)l+(r-l+1)(r-l)/2
代码:
题目大意:
求
最近在学数论这种东西……
分析可得:
然后呢?
对于N>K的部分,K mod i等于K
剩下的部分,由于K/i是向下取整的,所以K/i的值共有sqrt(k)种,分别是1,2,3,4……k
然后可以把k/i相同的项提取出来,剩下的sum=(l)+(l+1)+(l+2)+(l+3)……+(r-1)+(r),由于是个等差数列可以直接得出公式sum=(r-l+1)l+(r-l+1)(r-l)/2
代码:
[code]#include <iostream> #define ll long long using namespace std; int main() { ll n,k,ans = 0; cin >> n >> k; if(n >= k) { ans = k * (n-k); n = k-1; } for(ll i = 1;i <= n;i ++) { ll lst = k/(k/i); if(lst > n) lst = n; ans += k*(lst-i+1) - (k/i)*(lst+i)*(lst-i+1)/2; i = lst; } cout << ans << endl; return 0; }
相关文章推荐
- 实现多国语言的几个小知识
- swift可选链和类型转换
- 【学习笔记】分区表和分区索引——概念部分(一)
- [python]python子字符串的提取、字符串连接、字符串重复
- oracle function学习1
- 模拟迁途箭头圆圈
- ubuntu下创建、删除文件、文件夹,移动文件
- css层叠样式详解
- android View各属性详解
- 二叉搜索树-BST-查找算法-插入算法-删除算法 http://www.cnblogs.com/pangxiaodong/archive/2011/08/24/2151060.html
- 模拟迁途.html
- windows server做NTP时间服务器 及时间设置internet时间同步的方法
- 【实战Java高并发程序设计 2】无锁的对象引用:AtomicReference
- OSSIM下安装phpadmin全过程
- Java的Struts框架中Action的编写与拦截器的使用方法
- PHP在foreach中对$value赋值无效的问题
- BOW模型在ANN框架下的解释
- MySQL表结构修改
- 特殊控制器
- 苹果手机的语言自动识别