/*
Project Euler 12, 找出第一个三角数(前n个自然数之和),其因子个数超过500个。
answer: 76576500
*/
#include<bits/stdc++.h>
using namespace std;
int f(int n)
{
// 返回整数 n 的因子个数。
map<int, int> m;
for (int i = 2; i <= n / i; ++ i)
{
while (n % i == 0)
{
m[i] ++;
n /= i;
}
}
if (n > 1) m[n] ++;
int ans = 1;
for (auto e: m)
{
ans *= e.second + 1;
}
return ans;
}
int main(void)
{
int sum = 0;
for (int i = 1; ; ++ i)
{
sum += i;
if (f(sum) >= 500)
{
cout << sum << endl;
return 0;
}
}
return 0;
}