Problem p03050 (C++)

Buggy submission (status: Runtime Error):
//{{{
#include <algorithm>
#include <cmath>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <sys/time.h>
#include <unordered_map>
#include <unordered_set>
#include <vector>
using ll = long long;
enum : int { M = (int)1e9 + 7 };
enum : ll { MLL = (ll)1e18L + 9 };
using namespace std;
#ifdef LOCAL
#include "rprint2.hpp"
#else
#define FUNC(name)                                                             \
  template <ostream &out = cout, class... T> void name(T &&...) {}
FUNC(prints)
FUNC(printw) FUNC(printwe) FUNC(printb) FUNC(printbe) FUNC(printd) FUNC(printde)
    FUNC(printdu);
#endif
template <class S, class T> istream &operator>>(istream &in, pair<S, T> &p) {
  return in >> p.first >> p.second;
}
template <class T> istream &operator>>(istream &in, vector<T> &v) {
  for (auto &e : v) {
    in >> e;
  }
  return in;
}
//}}}

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  ll n;
  cin >> n;
  // for(int n = 1; n < 11; n++){
  //     printde(n);
  //     for(int m = 1; m <= n; m++){
  //         if(n / m == n % m){
  //             // if(n / m * (n / m) > n){
  //             //     printde(n, m);
  //             // }
  //             printde(n, m, n / m, n % m);
  //         }
  //     }
  // }
  ll ans = 0;
  for (ll i = 1; i * i <= n * 10; i++) {
    ll nn = n - i;
    // printde(nn, i, nn % i, nn / i);
    if (nn % i == 0 && n % (nn / i) == n / (nn / i)) {
      ans += nn / i;
    }
    // if(nn % i == 0 && !(n % (nn / i) == n / (nn / i))){
    //     printde(nn, i, nn % i, nn / i, n % (nn / i), n / (nn / i));
    // }
    // if(nn % i == 0 && nn / i == i){
    //     ans += i;
    // }
  }
  cout << ans << '\n';
}


Fixed submission:
//{{{
#include <algorithm>
#include <cmath>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <sys/time.h>
#include <unordered_map>
#include <unordered_set>
#include <vector>
using ll = long long;
enum : int { M = (int)1e9 + 7 };
enum : ll { MLL = (ll)1e18L + 9 };
using namespace std;
#ifdef LOCAL
#include "rprint2.hpp"
#else
#define FUNC(name)                                                             \
  template <ostream &out = cout, class... T> void name(T &&...) {}
FUNC(prints)
FUNC(printw) FUNC(printwe) FUNC(printb) FUNC(printbe) FUNC(printd) FUNC(printde)
    FUNC(printdu);
#endif
template <class S, class T> istream &operator>>(istream &in, pair<S, T> &p) {
  return in >> p.first >> p.second;
}
template <class T> istream &operator>>(istream &in, vector<T> &v) {
  for (auto &e : v) {
    in >> e;
  }
  return in;
}
//}}}

int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  ll n;
  cin >> n;
  // for(int n = 1; n < 11; n++){
  //     printde(n);
  //     for(int m = 1; m <= n; m++){
  //         if(n / m == n % m){
  //             // if(n / m * (n / m) > n){
  //             //     printde(n, m);
  //             // }
  //             printde(n, m, n / m, n % m);
  //         }
  //     }
  // }
  ll ans = 0;
  for (ll i = 1; i * i <= n * 10; i++) {
    ll nn = n - i;
    // printde(nn, i, nn % i, nn / i);
    if (nn / i == 0) {
      continue;
    }
    if (nn % i == 0 && n % (nn / i) == n / (nn / i)) {
      ans += nn / i;
    }
    // if(nn % i == 0 && !(n % (nn / i) == n / (nn / i))){
    //     printde(nn, i, nn % i, nn / i, n % (nn / i), n / (nn / i));
    // }
    // if(nn % i == 0 && nn / i == i){
    //     ans += i;
    // }
  }
  cout << ans << '\n';
}