Collapse | Copy Code
public class CubeSum implements Comparable<CubeSum> {
private final int sum;
private final int sum2;
private final int i;
private final int j;
private final int a;
private final int b;
public CubeSum(int i, int j,int a, int b) {
this.sum = i*i*i + j*j*j;
this.i = i;
this.j = j;
this.a = a;
this.b = b;
this.sum2 = a * a * a + b * b * b;
}
public CubeSum(int w
public int compareTo(CubeSum that) {
if (this.sum < that.sum) return -1;
if (this.sum < that.sum) return +1;
return 0;
}
public String toString() {
return sum + " = " + i + "^3" + " + " + j + "^3";
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
// initialize priority queue
MinPQ<CubeSum> pq = new MinPQ<CubeSum>();
pq.insert(new CubeSum(0,1);
for (int i = 0,j = 1; i & j <= N; i+=2,j+=2) {
pq.insert(new CubeSum(i, i,j,j,));
if(i>0 && j>1)
{
pq.insert(new CubeSum(0,i,0,j);
}
}
for(int i =0;i<N;i++)
{
for(int j=i+1;j<N;j++)
{
if(pq.sum[i] == pq.sum2[j])
System.out.println("the sum is" + sum[i] + "and the value of i is" + pq.i + " and j is" + pq.j + "and a is" + pq.a + "and b is " + pq.b
}
}
// find smallest sum, print it out, and update
while (!pq.isEmpty()) {
CubeSum s = pq.delMin();
StdOut.println(s);
}
}
}
am now confused on how to use this program to find all distinct integers a, b, c, and d between 0 and 10^6 such that a3 + b3 = c3 + d3, e.g., 1729 = 9^3 + 10^3 = 1^3 + 12^3.
this is the code i have devised which i think will work,but everytime i run it,i get an error message when i try to iterate through PQ to determine if sum = sum