📌  相关文章
📜  两个给定数字之间的完美立方体数

📅  最后修改于: 2021-04-21 21:09:10             🧑  作者: Mango

给定两个给定的数字ab ,其中1 <= a <= b,找到a和b之间的完美立方数(包括a和b)。
例子

Input :  a = 3, b = 16
Output : 1
The only perfect cube in given range is 8.

Input : a = 7, b = 30
Output : 2
The two cubes in given range are 8, 
and 27

方法1 :一种幼稚的方法是检查a和b之间的所有数字(包括a和b),并且每当遇到一个完美的立方体时,将计数加一。

下面是上述想法的实现:

CPP
// A Simple Method to count cubes between a and b
#include 
using namespace std;
 
// Function to count cubes between two numbers
int countCubes(int a, int b)
{
    int cnt = 0; // Initialize result
 
    // Traverse through all numbers
    for (int i = a; i <= b; i++)
 
        // Check if current number 'i' is perfect
        // cube
        for (int j = 1; j * j * j <= i; j++)
            if (j * j * j == i)
                cnt++;
 
    return cnt;
}
 
// Driver code
int main()
{
    int a = 7, b = 30;
    cout << "Count of Cubes is "
         << countCubes(a, b);
    return 0;
}


Java
// A Simple Method to count cubes between a and b
 
class GFG{
  
// Function to count cubes between two numbers
static int countCubes(int a, int b)
{
    int cnt = 0; // Initialize result
  
    // Traverse through all numbers
    for (int i = a; i <= b; i++)
  
        // Check if current number 'i' is perfect
        // cube
        for (int j = 1; j * j * j <= i; j++)
            if (j * j * j == i)
                cnt++;
  
    return cnt;
}
  
// Driver code
public static void main(String[] args)
{
    int a = 7, b = 30;
    System.out.print("Count of Cubes is "
         + countCubes(a, b));
}
}
 
// This code is contributed by 29AjayKumar


Python3
# A Simple Method to count cubes between a and b
  
# Function to count cubes between two numbers
def countCubes(a, b):
    cnt = 0 # Initialize result
  
    # Traverse through all numbers
    for i in range(a,b+1):
  
        # Check if current number 'i' is perfect
        # cube
        for j in range(i+1):
            if j*j*j>i:
                break
            if j * j * j == i:
                cnt+=1
  
    return cnt
  
# Driver code
if __name__ == '__main__':
    a = 7
    b = 30
    print("Count of Cubes is ",countCubes(a, b))
 
# This code is contributed by mohit kumar 29


C#
// A Simple Method to count cubes between a and b
using System;
 
class GFG{
   
// Function to count cubes between two numbers
static int countCubes(int a, int b)
{
    int cnt = 0; // Initialize result
   
    // Traverse through all numbers
    for (int i = a; i <= b; i++)
   
        // Check if current number 'i' is perfect
        // cube
        for (int j = 1; j * j * j <= i; j++)
            if (j * j * j == i)
                cnt++;
   
    return cnt;
}
   
// Driver code
public static void Main()
{
    int a = 7, b = 30;
    Console.Write("Count of Cubes is "
         + countCubes(a, b));
}
}
  
// This code is conributed by chitranayal


Javascript


C++
// An Efficient Method to count cubes between a and b
#include 
using namespace std;
 
// Function to count cubes between two numbers
int countCubes(int a, int b)
{
    return (floor(cbrt(b)) - ceil(cbrt(a)) + 1);
}
 
// Driver code
int main()
{
    int a = 7, b = 28;
    cout << "Count of cubes is "
         << countCubes(a, b);
    return 0;
}


Java
// An Efficient Method to count cubes between a and b
class GFG
{
 
// Function to count cubes between two numbers
static int countCubes(int a, int b)
{
    return (int) (Math.floor(Math.cbrt(b)) -
                Math.ceil(Math.cbrt(a)) + 1);
}
 
// Driver code
public static void main(String[] args)
{
    int a = 7, b = 28;
    System.out.print("Count of cubes is "
        + countCubes(a, b));
}
}
 
// This code is contributed by 29AjayKumar


Python3
# An Efficient Method to count cubes between a and b
from math import *
 
# Function to count cubes between two numbers
def countCubes(a, b):
     
    return (floor(b **(1./3.)) - ceil(a **(1./3.)) + 1)
 
# Driver code
a = 7
b = 28
print("Count of cubes is",countCubes(a, b))
 
# This code is contributed by shubhamsingh10


C#
// An Efficient Method to count cubes between a and b
// C# implementation of the above approach
using System;
 
class GFG
{
 
// Function to count cubes between two numbers
static int countCubes(int a, int b)
{
    return (int) (Math.Floor(Math.Cbrt(b)) -
                Math.Ceiling(Math.Cbrt(a)) + 1);
}
 
// Driver code
public static void Main(string[] args)
{
    int a = 7, b = 28;
    Console.WriteLine("Count of cubes is " + countCubes(a, b));
}
}
 
// This code is contributed by Yash_R


Javascript


输出:
Count of Cubes is 2

方法2(高效) :我们可以简单地将’a’的立方根和’b’的立方根以及将’a’的圆角立方根和’b’的圆角立方取下,并使用以下方法计算它们之间的理想立方体:

(floor(cbrt(b)) - ceil(cbrt(a)) + 1)

We take floor of cbrt(b) because we need to consider 
numbers before b.

We take ceil of cbrt(a) because we need to consider 
numbers after a.


For example, let b = 28, a = 7.  floor(cbrt(b)) = 3, 
ceil(cbrt(a)) = 2.  And number of cubes is 3 - 2 + 1
= 2. The two numbers are 8 and 27.

下面是上述想法的实现:

C++

// An Efficient Method to count cubes between a and b
#include 
using namespace std;
 
// Function to count cubes between two numbers
int countCubes(int a, int b)
{
    return (floor(cbrt(b)) - ceil(cbrt(a)) + 1);
}
 
// Driver code
int main()
{
    int a = 7, b = 28;
    cout << "Count of cubes is "
         << countCubes(a, b);
    return 0;
}

Java

// An Efficient Method to count cubes between a and b
class GFG
{
 
// Function to count cubes between two numbers
static int countCubes(int a, int b)
{
    return (int) (Math.floor(Math.cbrt(b)) -
                Math.ceil(Math.cbrt(a)) + 1);
}
 
// Driver code
public static void main(String[] args)
{
    int a = 7, b = 28;
    System.out.print("Count of cubes is "
        + countCubes(a, b));
}
}
 
// This code is contributed by 29AjayKumar

Python3

# An Efficient Method to count cubes between a and b
from math import *
 
# Function to count cubes between two numbers
def countCubes(a, b):
     
    return (floor(b **(1./3.)) - ceil(a **(1./3.)) + 1)
 
# Driver code
a = 7
b = 28
print("Count of cubes is",countCubes(a, b))
 
# This code is contributed by shubhamsingh10

C#

// An Efficient Method to count cubes between a and b
// C# implementation of the above approach
using System;
 
class GFG
{
 
// Function to count cubes between two numbers
static int countCubes(int a, int b)
{
    return (int) (Math.Floor(Math.Cbrt(b)) -
                Math.Ceiling(Math.Cbrt(a)) + 1);
}
 
// Driver code
public static void Main(string[] args)
{
    int a = 7, b = 28;
    Console.WriteLine("Count of cubes is " + countCubes(a, b));
}
}
 
// This code is contributed by Yash_R

Java脚本


输出:
Count of cubes is 2

时间复杂度:O(Log b)。