poj2800
2011-09-13 16:01
260 查看
题意:给出n,k,求k%1 + k%2 + …… + k%n;
分析:当k/i = 1 时, k%i = k - i,随着i不断减小1,k-i每次减小1,即k%i每次减小1。当k/i=2时,i减小1,k%i减小2。我们要求k%i的和,可以划分为许多等差数列的和。
View Code
分析:当k/i = 1 时, k%i = k - i,随着i不断减小1,k-i每次减小1,即k%i每次减小1。当k/i=2时,i减小1,k%i减小2。我们要求k%i的和,可以划分为许多等差数列的和。
View Code
#include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> using namespace std; long long n, k; int main() { //freopen("t.txt", "r", stdin); while (scanf("%lld%lld", &n, &k) != EOF) { long long ans = 0; if (n > k) ans = k * (n - k); int i = 1; long long a, b; while (true) { a = k / i; b = k / (i + 1) + 1; if (a == b) break; if (b > n) { i++; continue; } if (a > n) a = n; ans += (k % a + k % a + (a - b) * i) * (a - b + 1) / 2; i++; } for (i = 1; i <= min(n, a); i++) ans += k % i; printf("%lld\n", ans); } return 0; }
相关文章推荐
- POJ 2800 Joseph's Problem(数论)
- POJ 2800 垂直直方图 解题报告
- UVa 1363 POJ 2800 Joseph's Problem
- POJ 百炼 保研机试 2800:垂直直方图
- POJ 2800 Joseph's Problem 笔记
- Poj 2800 Joseph's Problem - 找规律
- POJ 2800 Joseph's Problem
- POJ 2800 Joseph’s Problem 数论找规律
- POJ - 2800
- poj 2800 找规律
- (one day one problem)poj 2800 Joseph's Problem (数学)
- POJ 2800 解题总结
- POJ 2800
- poj 2800 Joseph’s Problem(数论)
- poj&nbsp;百炼&nbsp;2800:垂直直方图
- POJ 2800 : Joseph\'s Problem (须仔细分析)
- poj 百练2800 垂直直方图
- poj 2800 LA 5916 求一个数模1到n 得到的和
- POJ 2800
- poj1020--Anniversary Cake题解