给定一个数字N 。在每一步,从 N 中减去最大的完美平方(≤ N)。当N > 0 时重复此步骤。任务是计算可以执行的步骤数。
例子:
Input: N = 85
Output: 2
First step, 85 – (9 * 9) = 4
Second step 4 – (2 * 2) = 0
Input: N = 114
Output: 4
First step, 114 – (10 * 10) = 14
Second step 14 – (3 * 3) = 5
Third step 5 – (2 * 2) = 1
Fourth step 1 – (1 * 1) = 0
方法:当N > 0 时,迭代地从N 中减去最大的完美平方(≤ N)并计算步数。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the count of steps
int countSteps(int n)
{
// Variable to store the count of steps
int steps = 0;
// Iterate while N > 0
while (n) {
// Get the largest perfect square
// and subtract it from N
int largest = sqrt(n);
n -= (largest * largest);
// Increment steps
steps++;
}
// Return the required count
return steps;
}
// Driver code
int main()
{
int n = 85;
cout << countSteps(n);
return 0;
}
Java
// Java implementation of the approach
import java.lang.Math;
public class GfG{
// Function to return the count of steps
static int countSteps(int n)
{
// Variable to store the count of steps
int steps = 0;
// Iterate while N > 0
while (n > 0) {
// Get the largest perfect square
// and subtract it from N
int largest = (int)Math.sqrt(n);
n -= (largest * largest);
// Increment steps
steps++;
}
// Return the required count
return steps;
}
public static void main(String []args){
int n = 85;
System.out.println(countSteps(n));
}
}
// This code is contributed by Rituraj Jain
Python3
# Python3 implementation of the approach
from math import sqrt
# Function to return the count of steps
def countSteps(n) :
# Variable to store the count of steps
steps = 0;
# Iterate while N > 0
while (n) :
# Get the largest perfect square
# and subtract it from N
largest = int(sqrt(n));
n -= (largest * largest);
# Increment steps
steps += 1;
# Return the required count
return steps;
# Driver code
if __name__ == "__main__" :
n = 85;
print(countSteps(n));
# This code is contributed by Ryuga
C#
// C# implementation of the approach
using System;
class GfG
{
// Function to return the count of steps
static int countSteps(int n)
{
// Variable to store the count of steps
int steps = 0;
// Iterate while N > 0
while (n > 0)
{
// Get the largest perfect square
// and subtract it from N
int largest = (int)Math.Sqrt(n);
n -= (largest * largest);
// Increment steps
steps++;
}
// Return the required count
return steps;
}
// Driver code
public static void Main()
{
int n = 85;
Console.WriteLine(countSteps(n));
}
}
// This code is contributed by Code_Mech.
PHP
0
while ($n)
{
// Get the largest perfect square
// and subtract it from N
$largest = (int)sqrt($n);
$n -= ($largest * $largest);
// Increment steps
$steps++;
}
// Return the required count
return $steps;
}
// Driver code
$n = 85;
echo countSteps($n);
// This code is contributed
// by Akanksha Rai
?>
Javascript
输出:
2
时间复杂度: O(1)
辅助空间: O(1)
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。