📜  计算立方体对为N(a ^ 3 + b ^ 3 = N)的对(a,b)

📅  最后修改于: 2021-04-23 20:55:01             🧑  作者: Mango

给定N,计算满足条件a ^ 3 + b ^ 3 = N的所有’a’和’b’。
例子:

Input : N = 9
Output : 2
1^3 + 2^3 = 9
2^3 + 1^3 = 9

Input : N = 28
Output : 2
 1^3 + 3^3 = 28
 3^3 + 1^3 = 28

注意:-(a,b)和(b,a)被认为是两个不同的对。
询问:Adobe

Implementation:
Travers numbers from 1 to cube root of N. 
  a) Subtract cube of current number from 
    N and check if their difference is a 
    perfect cube or not.
      i) If perfect cube then increment count.

2- Return count.

下面是上述方法的实现:

C++
// C++ program to count pairs whose sum
// cubes is N
#include
using namespace std;
  
// Function to count the pairs satisfying
// a ^ 3 + b ^ 3 = N
int countPairs(int N)
{
    int count = 0;
  
    // Check for each number 1 to cbrt(N)
    for (int i = 1; i <= cbrt(N); i++)
    {
        // Store cube of a number
        int cb = i*i*i;
  
        // Subtract the cube from given N
        int diff = N - cb;
  
        // Check if the difference is also
        // a perfect cube
        int cbrtDiff = cbrt(diff);
  
        // If yes, then increment count
        if (cbrtDiff*cbrtDiff*cbrtDiff == diff)
            count++;
    }
  
    // Return count
    return count;
}
  
// Driver program
int main()
{
    // Loop to Count no. of pairs satisfying
    // a ^ 3 + b ^ 3 = i for N = 1 to 10
    for (int i = 1; i<= 10; i++)
        cout << "For n = " << i << ", "
             << countPairs(i) <<" pair exists\n";
  
    return 0;
}


Java
// Java program to count pairs whose sum
// cubes is N
  
class Test
{
    // method to count the pairs satisfying
    // a ^ 3 + b ^ 3 = N
    static int countPairs(int N)
    {
        int count = 0;
       
        // Check for each number 1 to cbrt(N)
        for (int i = 1; i <= Math.cbrt(N); i++)
        {
            // Store cube of a number
            int cb = i*i*i;
       
            // Subtract the cube from given N
            int diff = N - cb;
       
            // Check if the difference is also
            // a perfect cube
            int cbrtDiff = (int) Math.cbrt(diff);
       
            // If yes, then increment count
            if (cbrtDiff*cbrtDiff*cbrtDiff == diff)
                count++;
        }
       
        // Return count
        return count;
    }
      
    // Driver method
    public static void main(String args[]) 
    {
        // Loop to Count no. of pairs satisfying
        // a ^ 3 + b ^ 3 = i for N = 1 to 10
        for (int i = 1; i<= 10; i++)
            System.out.println("For n = " + i + ", " +
                     + countPairs(i) + " pair exists");
    }
}


Python 3
# Python 3 program to count pairs 
# whose sum cubes is N
import math 
  
# Function to count the pairs 
# satisfying a ^ 3 + b ^ 3 = N
def countPairs(N):
  
    count = 0
  
    # Check for each number 1
    # to cbrt(N)
    for i in range(1, int(math.pow(N, 1/3) + 1)):
      
        # Store cube of a number
        cb = i * i * i
  
        # Subtract the cube from given N
        diff = N - cb
  
        # Check if the difference is also
        # a perfect cube
        cbrtDiff = int(math.pow(diff, 1/3))
  
        # If yes, then increment count
        if (cbrtDiff * cbrtDiff * cbrtDiff == diff):
            count += 1
      
    # Return count
    return count
  
  
# Driver program
  
# Loop to Count no. of pairs satisfying
# a ^ 3 + b ^ 3 = i for N = 1 to 10
for i in range(1, 11):
    print('For n = ', i, ', ', countPairs(i),
                                ' pair exists')
  
  
# This code is contributed by Smitha.


C#
// C# program to count pairs whose sum
// cubes is N
   
using System;
class Test
{
    // method to count the pairs satisfying
    // a ^ 3 + b ^ 3 = N
    static int countPairs(int N)
    {
        int count = 0;
        
        // Check for each number 1 to cbrt(N)
        for (int i = 1; i <= Math.Pow(N,(1.0/3.0)); i++)
        {
            // Store cube of a number
            int cb = i*i*i;
        
            // Subtract the cube from given N
            int diff = N - cb;
        
            // Check if the difference is also
            // a perfect cube
            int cbrtDiff = (int) Math.Pow(diff,(1.0/3.0));
        
            // If yes, then increment count
            if (cbrtDiff*cbrtDiff*cbrtDiff == diff)
                count++;
        }
        
        // Return count
        return count;
    }
       
    // Driver method
    public static void Main() 
    {
        // Loop to Count no. of pairs satisfying
        // a ^ 3 + b ^ 3 = i for N = 1 to 10
        for (int i = 1; i<= 10; i++)
            Console.Write("For n = " + i + ", " +
                     + countPairs(i) + " pair exists"+"\n");
    }
}


PHP


输出:

For n= 1, 1 pair exists
For n= 2, 1 pair exists
For n= 3, 0 pair exists
For n= 4, 0 pair exists
For n= 5, 0 pair exists
For n= 6, 0 pair exists
For n= 7, 0 pair exists
For n= 8, 1 pair exists
For n= 9, 2 pair exists
For n= 10, 0 pair exists

参考:https://www.careercup.com/question?id = 5954491572551680