码迷,mamicode.com
首页 > 其他好文 > 详细

2.4.25

时间:2018-06-05 23:25:33      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:none   min   build   ogr   space   where   ati   minimum   number   

question:

Computational number theory. Write a program CubeSum.java that prints out all integers of the form a^3 + b^3 where a and b are integers between 0 and N in sorted order, without using excessive space. That is, instead od computing an array of the N^2 sums and sorting them, build a minimum-oriented priority queue is nonempty, remove the smallest item(i^3 + j^3, i, j), print it, and then, if j < N, insert the item (i^3 + (j+1)^3), i, j+1). Use this program to find all distinct integers a, b, c, and d between 0 and 10^6 such that a^3 + b^3 = c^3 + d^3.

answer:

import edu.princeton.cs.algs4.*;

public class CubeSum implements Comparable<CubeSum>
{
    private int sum;
    private int x;
    private int y;
    
    public CubeSum(int i, int j)
    {
        sum = i*i*i + j*j*j;
        x = i;
        y = j;
    }
    
    public int compareTo(CubeSum t)
    {
        return this.sum - t.sum;
    }
    
    public void show()
    {
        StdOut.println(sum + " " + x + " " + y);
    }
    
    public static void main(String[] args)
    {
        int N = StdIn.readInt();
        MinPQ<CubeSum> cubesum = new MinPQ<CubeSum>();
        for(int i = 0; i <= N; i++)
            cubesum.insert(new CubeSum(i,0));
        while(cubesum.size() > 1)
        {
            CubeSum t = cubesum.delMin();
            CubeSum c = cubesum.min();
            if(t.sum == c.sum)
               StdOut.println(t.x + "^3 " + "+" + t.y + "^3 = " + c.x + "^3 " + "+" + c.y + "^3 = " + t.sum);
            if(t.y < N)
            {
                cubesum.insert(new CubeSum(t.x,t.y+1));
            }
        }
    }
}

 

2.4.25

标签:none   min   build   ogr   space   where   ati   minimum   number   

原文地址:https://www.cnblogs.com/w-j-c/p/9142177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!