n^3 = a^3 + b^3 + c^3,
a <= b <= c。
所以迴圈就這樣寫即可!
a從2開始,b從a開始,c從b開始。
當a^3 + b^3 + c^3 < n^3時,c + 1。
a^3 + b^3 + c^3 == n^3時,找到一組,
a^3 + b^3 + c^3 > n^3時,b + 1。
a^3 + b^3 > n^3時,a + 1。
a == n時,終止。
/* ACM 386 Perfect Cubes
* mythnc
* 2011/12/18 12:17:31
* run time: 0.132
*/
#include <stdio.h>
#define CUBIC(X) (X * X * X)
void cal(int);
int main(void)
{
int i;
for (i = 6; i <= 200; i++)
cal(i);
return 0;
}
/* cal: calculate answer */
void cal(int n)
{
int i, j, k, value;
for (i = 2; i < n; i++)
for (j = i; CUBIC(i) + CUBIC(j) < CUBIC(n); j++)
for (k = j; ; k++) {
value = CUBIC(i) + CUBIC(j) + CUBIC(k);
if (value < CUBIC(n))
continue;
else if (value == CUBIC(n))
printf("Cube = %d, Triple = (%d,%d,%d)\n", n, i, j, k);
else
break;
}
}
沒有留言:
張貼留言