最少的要加或减的数,使其成为一个完美的立方体
给定一个数 N ,求 N 需要加减的最小数,使其成为完美立方体。如果要加数字,用+号打印,否则如果要减数字,用–号打印。
示例:
输入: N = 25 输出:2 25 = 8 25 = 27 后最近的完美立方体因此需要将 2 加到 25 才能得到最近的完美立方体
输入: N = 40 输出:-13 40 = 25 之前最近的完美立方体 40 = 64 之后最近的完美立方体 因此需要从 40 中减去 13 才能得到最近的完美立方体
接近:
- 拿到号码。
- 求数字的立方根,将结果转换为整数。
- 将双精度值转换为整数后,这将包含 N 之前的完美立方体的根,即 floor(立方根(N)) 。
- 然后求这个数的立方,这将是 n 之前的完美立方。
- 求 N 后的完美立方根,即天花板(立方根(N)) 。
- 然后求这个数的立方,这将是 n 之后的完美立方。
- 检查楼层值的立方是最接近 N 还是天花板值。
- 如果楼层值的立方最接近 N,用-号打印差值。否则打印天花板值的立方和带+号的 N 之间的差值。
以下是上述方法的实现:
C++
// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Function to return the Least number
int nearest(int n)
{
// Get the perfect cube
// before and after N
int prevCube = cbrt(n);
int nextCube = prevCube + 1;
prevCube = prevCube * prevCube * prevCube;
nextCube = nextCube * nextCube * nextCube;
// Check which is nearest to N
int ans
= (n - prevCube) < (nextCube - n)
? (prevCube - n)
: (nextCube - n);
// return the result
return ans;
}
// Driver code
int main()
{
int n = 25;
cout << nearest(n) << endl;
n = 27;
cout << nearest(n) << endl;
n = 40;
cout << nearest(n) << endl;
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java implementation of the approach
class GFG {
// Function to return the Least number
static int nearest(int n)
{
// Get the perfect cube
// before and after N
int prevCube = (int)Math.cbrt(n);
int nextCube = prevCube + 1;
prevCube = prevCube * prevCube * prevCube;
nextCube = nextCube * nextCube * nextCube;
// Check which is nearest to N
int ans = (n - prevCube) < (nextCube - n) ?
(prevCube - n) : (nextCube - n);
// return the result
return ans;
}
// Driver code
public static void main (String[] args)
{
int n = 25;
System.out.println(nearest(n));
n = 27;
System.out.println(nearest(n)) ;
n = 40;
System.out.println(nearest(n)) ;
}
}
// This code is contributed by Yash_R
Output:
2
0
-13
版权属于:月萌API www.moonapi.com,转载请注明出处