题目

P1403 [AHOI2005]约数研究

简化题意

\(f(x)\) 表示 \(\sum\limits_{i = 1} ^ {x} [i\mid x]\)\(\sum\limits_{i = 1}^{n} f(i)\)

思路

整除分块。

一个数 \(i\)\(1 \sim n\) 中它的倍数一共有 \(\left\lfloor \dfrac{n}{i} \right\rfloor\) 个,即 \(i\) 对答案的贡献为 \(\left\lfloor \dfrac{n}{i} \right\rfloor\)

考虑枚举约数,\(\sum\limits_{i = 1} ^ {n} \left\lfloor \dfrac{n}{i} \right\rfloor\) 就是答案。

Code

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>

int n, ans;

int main() {
    scanf("%d", &n);
    for (int i = 1, j; i <= n; i = j + 1) {
        j = n / (n / i);
        ans += (j - i + 1) * (n / i);
    }
    std::cout << ans << '\n';
    return 0;
}

相关文章:

  • 2021-07-11
  • 2022-01-01
  • 2022-01-15
  • 2022-12-23
  • 2022-03-04
  • 2022-01-14
  • 2021-05-20
猜你喜欢
  • 2021-08-26
  • 2021-09-25
  • 2021-09-20
  • 2022-01-18
相关资源
相似解决方案