fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define MOD 1000000007
  5.  
  6. // Hàm tính tổng các ước của mỗi số từ 1 đến n
  7. long long sumOfDivisors(int n) {
  8. long long result = 0;
  9. for (int i = 1; i <= n; ++i) {
  10. // Đối với mỗi số i, tổng các ước của nó có thể tính bằng công thức (i * (n / i) * (n / i + 1)) / 2
  11. // n / i là số lượng số nguyên có ước là i trong khoảng từ 1 đến n
  12. long long count = n / i;
  13. result = (result + i * count % MOD * (count + 1) % MOD * 500000004 % MOD) % MOD; // 500000004 là nghịch đảo mod của 2
  14. }
  15. return result;
  16. }
  17.  
  18. int main() {
  19. int n;
  20. cin >> n;
  21. cout << sumOfDivisors(n) << endl;
  22. return 0;
  23. }
  24.  
Success #stdin #stdout 0.01s 5276KB
stdin
4
stdout
23