码迷,mamicode.com
首页 > 其他好文 > 详细

1257: [CQOI2007]余数之和

时间:2018-07-22 21:37:42      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:border   ble   href   tar   cout   typedef   end   直接   rap   

1257: [CQOI2007]余数之和

https://www.lydsy.com/JudgeOnline/problem.php?id=1257

 

分析:

$\sum\limits_{n=1}^N k \ mod\ n$

当n > k时,k mod n都是k,所以直接求就好了。

另一种情况:

$\sum\limits_{n=1}^N k - \frac{k}{n} \times n$

然后对于$\frac{k}{n}$这里进行分块。

 

代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 
 5 LL get(int l,int r) {
 6     l --;
 7     LL t1 = 1ll * (l + 1) * l / 2; // long long 
 8     LL t2 = 1ll * (r + 1) * r / 2;
 9     return t2 - t1;
10 }
11 
12 int main() {
13     
14     int n,k; cin >> n >> k;
15     LL ans = 0;
16     if (n > k) {
17         ans += 1ll * (n - k) * k;n = k;
18     }
19     int pos;
20     for (int i=1; i<=n; i=pos+1) {
21         pos = k / (k / i);
22         if (pos > n) pos = n;
23         ans += 1ll * k * (pos - i + 1); 
24         ans -= 1ll * (k / i) * get(i,pos);
25     }
26     cout << ans;
27     return 0;
28 }

 

 

1257: [CQOI2007]余数之和

标签:border   ble   href   tar   cout   typedef   end   直接   rap   

原文地址:https://www.cnblogs.com/mjtcn/p/9351490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!