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_数学