给定一个整数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)