1 条题解
-
0
/* F(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n 因 k mod i=k-(k/i)*i 故 F(n, k)=n*k - ∑[k/i]*i 故分块加速求 ∑[k/i]*i 即可 */ #include<bits/stdc++.h> using namespace std; typedef long long LL; int main() { LL n, k;scanf("%lld%lld", &n, &k); LL ans=0; for(LL l=1, r;l<=n;l=r+1) { if(k/l==0) break; r=min(k/(k/l), n); ans+=((r-l+1)*(l+r)/2)*(k/l); } printf("%lld\n", n*k-ans); return 0; }
- 1
信息
- ID
- 2910
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 100
- 已通过
- 35
- 上传者