基础题。
#include <iostream>
using namespace std;
const int MAXA = 55;
const int MAXB = 100;
int main()
{
int a[MAXA], b[MAXB]; //立方数,四面体数
for (int i = 0; i < MAXA; i++)
{
a[i] = i * i * i;
}
for (int i = 0; i < MAXB; i++)
{
b[i] = i * (i + 1) * (i + 2) / 6;
}
int n;
while (cin >> n)
{
if (n == 0)
break;
int maxSum = 0;
for (int i = 0; i < MAXA && a[i] <= n; i++)
{
for (int j = 1; j < MAXB && a[i] + b[j] <= n; j++)
if (a[i] + b[j] > maxSum)
maxSum = a[i] + b[j];
}
cout << maxSum << endl;
}
return 0;
}
继续加油。