#include <iostream>
#include <cstdlib>
using namespace std;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
const int MAX_SIZE = 202;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int Cube[MAX_SIZE];
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int cmp(const void *p,const void *q)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
return *(int *)p - *(int *)q;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int main()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
int i,a,b,c,n;
int *p;
for(i = 1; i <= 200; i++)
Cube[i] = i*i*i;//记录下1~200相对应的立方
for(n = 6; n <= 200; n++)
for(a = 2; a < n; a++)
for(b = a ; b <= n; b++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
c = Cube[n] - Cube[a] - Cube[b];
if(c <= 0)continue;
if(c < Cube[b])continue;//满足a <= b <= c
p = (int *)bsearch(&c,Cube,n,sizeof(int),cmp);
if(p)
cout<<"Cube = "<<n<<", Triple = ("<<a<<","<<b<<","<<p - Cube<<")"<<endl;
}
return 0;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)