Número de formas de obtener una suma uniforme eligiendo tres números del 1 al N

Dado un número entero N, encuentre el número de formas en que podemos elegir 3 números de {1, 2, 3…, N} tales que su suma sea par. 
Ejemplos: 
 

Input :  N = 3
Output : 1
Explanation: Select 1, 2 and 3

Input :  N = 4
Output :  2
Either select (1, 2, 3) or (1, 3, 4)

Recomendado: Resuelva primero en » PRÁCTICA «, antes de pasar a la solución.

Para obtener la suma incluso solo puede haber 2 casos: 
 

  1. Toma 2 números impares y 1 par.
  2. Toma todos los números pares.
If n is even,
  Count of odd numbers = n/2 and even = n/2.
Else
  Count odd numbers = n/2 +1 and even = n/2.

Caso 1 – El número de vías será: impar C 2 * par. 
Caso 2 – El número de vías será: par C 3 .
Entonces, las formas totales serán Case_1_result + Case_2_result. 
 

C++

// C++ program for above implementation
#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;
 
// Function to count number of ways
int countWays(int N)
{
    long long int count, odd = N / 2, even;
    if (N & 1)
        odd = N / 2 + 1;
 
    even = N / 2;
 
    // Case 1: 2 odds and 1 even
    count = (((odd * (odd - 1)) / 2) * even) % MOD;
 
    // Case 2: 3 evens
    count = (count + ((even * (even - 1) *
                           (even - 2)) / 6)) % MOD;
 
    return count;
}
 
// Driver code
int main()
{
    int n = 10;
    cout << countWays(n) << endl;
    return 0;
}

Java

// java program for above implementation
import java.io.*;
 
class GFG {
     
    static long MOD = 1000000007;
     
    // Function to count number of ways
    static long countWays(int N)
    {
        long count, odd = N / 2, even;
         
        if ((N & 1) > 0)
            odd = N / 2 + 1;
     
        even = N / 2;
     
        // Case 1: 2 odds and 1 even
        count = (((odd * (odd - 1)) / 2)
                          * even) % MOD;
     
        // Case 2: 3 evens
        count = (count + ((even * (even
                - 1) * (even - 2)) / 6))
                                  % MOD;
     
        return (long)count;
    }
     
    // Driver code
    static public void main (String[] args)
    {
        int n = 10;
         
        System.out.println(countWays(n));
    }
}
 
// This code is contributed by vt_m.

Python3

# Python3 code for above implementation
 
MOD = 1000000007
 
# Function to count number of ways
def countWays( N ):
    odd = N / 2
    if N & 1:
        odd = N / 2 + 1
    even = N / 2
     
    # Case 1: 2 odds and 1 even
    count = (((odd * (odd - 1)) / 2) * even) % MOD
 
    # Case 2: 3 evens
    count = (count + ((even * (even - 1) *
            (even - 2)) / 6)) % MOD
    return count
 
# Driver code
n = 10
print(int(countWays(n)))
 
# This code is contributed by "Sharad_Bhardwaj"

C#

// C# program for above implementation
using System;
 
public class GFG {
     
    static long MOD = 1000000007;
     
    // Function to count number of ways
    static long countWays(int N)
    {
        long count, odd = N / 2, even;
         
        if ((N & 1) > 0)
            odd = N / 2 + 1;
     
        even = N / 2;
     
        // Case 1: 2 odds and 1 even
        count = (((odd * (odd - 1)) / 2)
                            * even) % MOD;
     
        // Case 2: 3 evens
        count = (count + ((even * (even
                  - 1) * (even - 2)) / 6))
                                    % MOD;
     
        return (long)count;
    }
     
    // Driver code
    static public void Main ()
    {
        int n = 10;
 
        Console.WriteLine(countWays(n));
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program for
// above implementation
 
$MOD = 1000000007;
 
// Function to count
// number of ways
function countWays($N)
{
    global $MOD;
     
    $count;
    $odd =$N / 2;
    $even;
    if ($N & 1)
        $odd = $N / 2 + 1;
 
    $even = $N / 2;
 
    // Case 1: 2 odds
    // and 1 even
    $count = ((($odd * ($odd - 1)) / 2) *
                            $even) % $MOD;
 
    // Case 2: 3 evens
    $count = ($count + (($even * ($even - 1) *
                        ($even - 2)) / 6)) % $MOD;
 
    return $count;
}
 
    // Driver Code
    $n = 10;
    echo countWays($n);
 
// This code is contributed by anuj_67.
?>

Javascript

<script>
 
// Javascript program for above implementation
let MOD = 1000000007;
       
    // Function to count number of ways
    function countWays(N)
    {
        let count, odd = N / 2, even;
           
        if ((N & 1) > 0)
            odd = N / 2 + 1;
       
        even = N / 2;
       
        // Case 1: 2 odds and 1 even
        count = (((odd * (odd - 1)) / 2)
                          * even) % MOD;
       
        // Case 2: 3 evens
        count = (count + ((even * (even
                - 1) * (even - 2)) / 6))
                                  % MOD;
       
        return count;
    }
     
// Driver code
        let n = 10;         
        document.write(countWays(n));
         
        // This code is contributed by code_hunt.
</script>

Producción:

60

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Este artículo es una contribución de Sahil Chhabra . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *