BZOJ1257 [CQOI2007] 余数之和sum

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1257

Description

给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数。例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7

Input

输入仅一行,包含两个整数n, k。

Output

输出仅一行,即j(n, k)。

Orz教主我看到题全不会做照着教主的题解打的……

http://www.cnblogs.com/JSZX11556/p/4685732.html

事实证明我只适合做个文化课选手,今天在颓废准备退役

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cstring>
 5 using namespace std;
 6 typedef long long ll;
 7 int n,k; ll ans = 0;
 8 int main(){
 9     scanf("%d%d",&n,&k);
10     if (n >= k) ans += (ll) (k) * (n - k), n = k - 1;
11     for(int l = 1; l <= n;){
12         int t = k / l, r = t ? k / t : n;
13         if (r > n) r = n;
14         ans += (ll) (k) * (r - l + 1) - (ll) (t) * (l + r) * (r - l + 1) / 2;
15         l = r + 1;
16     }
17     printf("%lld\n",ans);
18     return 0;
19 }
View Code

 

posted on 2016-03-10 21:08  ACMICPC  阅读(153)  评论(0编辑  收藏  举报

导航