给定正整数N ,计算将N写入三个数字之和的方式数。对于无法表达的数字,请打印-1。
例子:
Input: N = 4
Output: 3
Explanation:
( 1 + 1 + 2 ) = 4
( 1 + 2 + 1 ) = 4
( 2 + 1 + 1 ) = 4.
So in total, there are 3 ways.
Input: N = 5
Output: 6
( 1 + 1 + 3 ) = 5
( 1 + 3 + 1 ) = 5
( 3 + 1 + 1 ) = 5
( 1 + 2 + 2 ) = 5
( 2 + 2 + 1 ) = 5
( 2 + 1 + 2 ) = 5.
So in total, there are 6 ways
方法:如果我们仔细研究一下,就可以解决上述问题,我们将在解决问题的方式中观察到一个模式。对于这一切是大于2的数字,我们得到了一系列的3,6,10,15,25等,这只不过是第一N-1的自然数的总和。
下面是上述方法的实现:
C++
// C++ program to count the total number of
// ways to write N as a sum of three numbers
#include
using namespace std;
// Function to find the number of ways
void countWays(int n)
{
// Check if number is less than 2
if (n <= 2)
cout << "-1";
else {
// Calculate the sum
int ans = (n - 1) * (n - 2) / 2;
cout << ans;
}
}
// Driver code
int main()
{
int N = 5;
countWays(N);
return 0;
}
Java
// Java program to count the total number of
// ways to write N as a sum of three numbers
class GFG{
// Function to find the number of ways
static void countWays(int n)
{
// Check if number is less than 2
if (n <= 2)
{
System.out.print("-1");
}
else
{
// Calculate the sum
int ans = (n - 1) * (n - 2) / 2;
System.out.print(ans);
}
}
// Driver code
public static void main(String[] args)
{
int N = 5;
countWays(N);
}
}
// This code is contributed by Amit Katiyar
Python3
# Python3 program to count the total number of
# ways to write N as a sum of three numbers
def countWays(N):
# Check if number is less than 2
if (N <= 2):
print("-1")
else:
# Calculate the sum
ans = (N - 1) * (N - 2) / 2
print(ans)
# Driver code
if __name__ == '__main__':
N = 5
countWays(N)
# This code is contributed by coder001
C#
// C# program to count the total number of
// ways to write N as a sum of three numbers
using System;
class GFG{
// Function to find the number of ways
static void countWays(int n)
{
// Check if number is less than 2
if (n <= 2)
{
Console.WriteLine("-1");
}
else
{
// Calculate the sum
int ans = (n - 1) * (n - 2) / 2;
Console.WriteLine(ans);
}
}
// Driver code
static void Main()
{
int N = 5;
countWays(N);
}
}
// This code is contributed by divyeshrabadiya07
Javascript
输出:
6
时间复杂度: O(1)