给定一个整数N ,任务是将数字分成四部分,这样划分的部分可以用来构造矩形而不是正方形。找出有多少种方式,以便可以将数字除以满足条件。
例子:
Input: N = 8
Output: 1
Input: N = 10
Output: 2
方法:由于数字必须被划分为由四个部分组成的矩形,所以如果数字是奇数,那么路数将为零,因为矩形的周长总是偶数
现在,如果n 是偶数,那么只有(n – 2) / 4种方法可以将数字除以,例如,
如果 8 必须分成四部分,那么只有(8 – 2) / 4 = 1 种方式,即[1, 1, 3, 3] ,没有其他方式。这是因为你只能取边长 < = n/2 – 1来形成一个有效的矩形,并且从这些n/2 – 1 个矩形计数再次除以 2 以避免重复计算。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the
// required number of ways
int cntWays(int n)
{
if (n % 2 == 1) {
return 0;
}
else {
return (n - 2) / 4;
}
}
// Driver code
int main()
{
int n = 18;
cout << cntWays(n);
return 0;
}
Java
// Java implementation of the approach
class GFG
{
// Function to return the
// required number of ways
static int cntWays(int n)
{
if (n % 2 == 1)
{
return 0;
}
else
{
return (n - 2) / 4;
}
}
// Driver code
public static void main (String[] args)
{
int n = 18;
System.out.println(cntWays(n));
}
}
// This code is contributed by AnkitRai01
Python3
# Python 3 implementation of the approach
# Function to return the
# required number of ways
def cntWays(n) :
if n % 2 == 1 :
return 0
else:
return (n - 2) // 4
# Driver code
n = 18
print(cntWays(n))
# This code is contributed by
# divyamohan123
C#
// C# implementation of the approach
using System;
class GFG
{
// Function to return the
// required number of ways
static int cntWays(int n)
{
if (n % 2 == 1)
{
return 0;
}
else
{
return (n - 2) / 4;
}
}
// Driver code
public static void Main (String[] args)
{
int n = 18;
Console.WriteLine(cntWays(n));
}
}
// This code is contributed by 29AjayKumar
Javascript
输出:
4
时间复杂度: O(1)