1257: [CQOI2007]余数之和

Posted mjtcn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1257: [CQOI2007]余数之和相关的知识,希望对你有一定的参考价值。

1257: [CQOI2007]余数之和

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

 

分析:

$sumlimits_{n=1}^N k mod n$

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

另一种情况:

$sumlimits_{n=1}^N k - frac{k}{n} imes 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]余数之和的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 1257[CQOI2007]余数之和sum

BZOJ_1257_ [CQOI2007]余数之和sum_数学

bzoj1257: [CQOI2007]余数之和sum

bzoj1257[CQOI2007]余数之和sum

BZOJ 1257 [CQOI2007]余数之和sum ——Dirichlet积

1257: [CQOI2007]余数之和