Problem p02624 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <algorithm>
#include <assert.h>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <time.h>
#include <unordered_map>
#include <unordered_set>
#include <vector>
using namespace std;

// #define double long double
#define int long long
// #define int unsigned long long

#define ll long long
#define ld long double
#define pi pair<int, int>
#define pl pair<ll, ll>
#define pd pair<ld, ld>
#define str string
#define mp make_pair
#define vi vector<int>
#define vl vector<ll>
#define vd vector<ld>
#define vs vector<str>
#define vpi vector<pi>
#define vpl vector<pl>
#define vpd vector<pd>
#define si set<int>
#define FF(i, j, n) for (signed i = j; i <= n; i++)
#define DD(i, j, n) for (signed i = j; i >= n; i--)
#define F(i, j, n) for (signed i = j; i < n; i++)
#define D(i, j, n) for (signed i = j; i > n; i--)
#define mem(a, b) memset(a, b, sizeof(a))
#define ndl cout << endl
#define ull unsigned long long

const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fLL;

#define sz(x) (signed)x.size()
#define all(x) begin(x), end(x)
#define rall(x) (x).rbegin(), (x).rend()
#define rsz resize
#define ins insert
#define ft front()
#define bk back()
#define X first
#define Y second
#define pf push_front
#define pb push_back
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define IOS                                                                    \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
#define SHOWVECTOR(v)                                                          \\
  {                                                                            \\
    std::cerr << #v << "\\t: ";                                                 \\
    for (const auto &xxx : v) {                                                \\
      std::cerr << xxx << " ";                                                 \\
    }                                                                          \\
    std::cerr << "\\n";                                                         \\
  }
#define SHOWVECTOR2(v)                                                         \\
  {                                                                            \\
    std::cerr << #v << "\\t:\\n";                                                \\
    for (const auto &xxx : v) {                                                \\
      for (const auto &yyy : xxx) {                                            \\
        std::cerr << yyy << " ";                                               \\
      }                                                                        \\
      std::cerr << "\\n";                                                       \\
    }                                                                          \\
  }
// math

const int mod = 1e9 + 7;

ll powmod(ll a, ll b) {
  ll res = 1;
  a %= mod;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1)
      res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
int pct(int x) { return __builtin_popcount(x); }
int bit(int x) { return 31 - __builtin_clz(x); } // floor(log2(x))
int cdiv(int a, int b) {
  return a / b + !(a < 0 || a % b == 0);
} // division of a by b rounded up, assumes b > 0

// DEBUG, compile with -DLOCAL
void DBG() { cerr << "]" << endl; }
template <class H, class... T> void DBG(H h, T... t) {
  cerr << to_string(h);
  if (sizeof...(t))
    cerr << ", ";
  DBG(t...);
}
#ifdef LOCAL
#define dbg(...) cerr << "[" << #__VA_ARGS__ << "]: [", DBG(__VA_ARGS__)
#define HERE cout << "===GOTHERE===" << endl
#else
#define dbg(...) 42
#define HERE 42
#endif

/* ============== END OF HEADER ============== */

const int maxn = 1e5 * 3 + 20;

int n, _, q, k;

void solve() {
  cin >> n;
  int ans = 0;
  FF(i, 1, n) {
    int cnt = n / i;
    int sum = (i + (cnt * i)) * cnt / 2;
    ans += sum;
  }
  cout << ans;
}

signed main() {
  // clock_t t1 = clock();
  IOS solve();

  // cout << "THE ALGORITHM TOOK: " << (clock() - t1) * 1.0 / CLOCKS_PER_SEC *
  // 1000 << "ms"<< endl;
  return 0;
}

Error: TLE

Fixed submission:

#include <algorithm>
#include <assert.h>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <time.h>
#include <unordered_map>
#include <unordered_set>
#include <vector>
using namespace std;

// #define double long double
// #define int long long
// #define int unsigned long long

#define ll long long
#define ld long double
#define pi pair<int, int>
#define pl pair<ll, ll>
#define pd pair<ld, ld>
#define str string
#define mp make_pair
#define vi vector<int>
#define vl vector<ll>
#define vd vector<ld>
#define vs vector<str>
#define vpi vector<pi>
#define vpl vector<pl>
#define vpd vector<pd>
#define si set<int>
#define FF(i, j, n) for (signed i = j; i <= n; i++)
#define DD(i, j, n) for (signed i = j; i >= n; i--)
#define F(i, j, n) for (signed i = j; i < n; i++)
#define D(i, j, n) for (signed i = j; i > n; i--)
#define mem(a, b) memset(a, b, sizeof(a))
#define ndl cout << endl
#define ull unsigned long long

const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3fLL;

#define sz(x) (signed)x.size()
#define all(x) begin(x), end(x)
#define rall(x) (x).rbegin(), (x).rend()
#define rsz resize
#define ins insert
#define ft front()
#define bk back()
#define X first
#define Y second
#define pf push_front
#define pb push_back
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define IOS                                                                    \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL);
#define SHOWVECTOR(v)                                                          \\
  {                                                                            \\
    std::cerr << #v << "\\t: ";                                                 \\
    for (const auto &xxx : v) {                                                \\
      std::cerr << xxx << " ";                                                 \\
    }                                                                          \\
    std::cerr << "\\n";                                                         \\
  }
#define SHOWVECTOR2(v)                                                         \\
  {                                                                            \\
    std::cerr << #v << "\\t:\\n";                                                \\
    for (const auto &xxx : v) {                                                \\
      for (const auto &yyy : xxx) {                                            \\
        std::cerr << yyy << " ";                                               \\
      }                                                                        \\
      std::cerr << "\\n";                                                       \\
    }                                                                          \\
  }
// math

const int mod = 1e9 + 7;

ll powmod(ll a, ll b) {
  ll res = 1;
  a %= mod;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1)
      res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
int pct(int x) { return __builtin_popcount(x); }
int bit(int x) { return 31 - __builtin_clz(x); } // floor(log2(x))
int cdiv(int a, int b) {
  return a / b + !(a < 0 || a % b == 0);
} // division of a by b rounded up, assumes b > 0

// DEBUG, compile with -DLOCAL
void DBG() { cerr << "]" << endl; }
template <class H, class... T> void DBG(H h, T... t) {
  cerr << to_string(h);
  if (sizeof...(t))
    cerr << ", ";
  DBG(t...);
}
#ifdef LOCAL
#define dbg(...) cerr << "[" << #__VA_ARGS__ << "]: [", DBG(__VA_ARGS__)
#define HERE cout << "===GOTHERE===" << endl
#else
#define dbg(...) 42
#define HERE 42
#endif

/* ============== END OF HEADER ============== */

// Prime Factor without sieve
vector<pair<ll, ll>> prime_fac(ll n) {
  vector<pair<ll, ll>> ret;
  for (ll p = 2; p * p <= n; ++p) {
    if (n % p != 0)
      continue;
    int divc = 0;
    while (n % p == 0) {
      ++divc;
      n /= p;
    }
    ret.eb(mp(p, divc));
  }
  if (n != 1)
    ret.eb(mp(n, 1));

  return ret;
}

const int maxn = 1e5 * 3 + 20;

int n, _, q, k;

void solve() {
  cin >> n;
  ll ans = 0;
  FF(i, 1, n) {
    ll base = 1;
    auto pf = prime_fac(i);
    for (auto p : pf) {
      base *= (p.second + 1);
    }

    ans += (i * base);
  }
  cout << ans << endl;
}

signed main() {
  // clock_t t1 = clock();
  IOS solve();

  // cout << "THE ALGORITHM TOOK: " << (clock() - t1) * 1.0 / CLOCKS_PER_SEC *
  // 1000 << "ms"<< endl;
  return 0;
}