Recuento del total de caras y cruces después de que N lanza una moneda

Dado el carácter C y un número entero N que representa N número de monedas en la posición C, donde C puede ser cara o cruz . Podemos lanzar las monedas N veces, en la i-ésima ronda el jugador lanzará la cara de todas las monedas cuyo número sea menor o igual que i. La tarea es determinar el número total de cara y cruz después de voltear N veces posibles.

Ejemplos:

Entrada: C = ‘H’, N = 5 
Salida: Cara = 2, Cruz = 3 
Explicación: 
H significa inicialmente que todas las monedas miran en la dirección de la cabeza, N significa el número total de monedas. 
Así que inicialmente para i = 0, tenemos: HHHHH 
Después de la primera ronda que es i = 1: THHHH 
Después de la segunda ronda que es i = 2: HTHHH 
Después de la tercera ronda que es i = 3: THTHH 
Después de la cuarta ronda que es i = 4: HTHTH 
Después de la quinta ronda, eso es i = 5: THTHT 
Por lo tanto, la cuenta total de la cara es 2 y la cola es 3.

Entrada: C = ‘T’, N = 7 
Salida: Cara = 4, Cruz = 3 
Explicación: 
Después de todos los cambios posibles, el recuento de cara y cruz es 4 y 3. 
 

Enfoque: 
Para resolver el problema mencionado anteriormente, debemos seguir los pasos que se detallan a continuación:  

  • En la pregunta anterior, si observamos, entonces hay un patrón que si inicialmente todas las monedas miran hacia la dirección de la cabeza , entonces el número total de caras después de N rondas será el valor mínimo de (n / 2) y las cruces serán la celda. valor de (n/2).
  • De lo contrario, si todas las monedas miran hacia la dirección de la cruz, el número total de cruces después de N rondas tendrá un valor mínimo de (n/2) y las caras tendrán un valor máximo de (n/2).

A continuación se muestra la implementación: 

C++

// C++ program to count total heads
// and tails after N flips in a coin
#include<bits/stdc++.h>
using namespace std;
 
// Function to find count of head and tail
pair<int, int> count_ht(char s, int N)
{
     
    // Check if initially all the
    // coins are facing towards head
    pair<int, int>p;
    if(s == 'H')
    {
        p.first = floor(N / 2.0);
        p.second = ceil(N / 2.0);
    }
     
    // Check if initially all the coins
    // are facing towards tail
    else if(s == 'T')
    {
        p.first = ceil(N / 2.0);
        p.second = floor(N / 2.0);
    }
     
    return p;
}
 
// Driver code
int main()
{
    char C = 'H';
    int N = 5;
     
    pair<int, int> p = count_ht(C, N);
     
    cout << "Head = " << (p.first) << "\n";
    cout << "Tail = " << (p.second) << "\n";
}
 
// This code is contributed by virusbuddah_

Java

// Java program to count
// total heads and tails
// after N flips in a coin
import javafx.util.Pair;
public class Main
{
// Function to find count of head and tail 
public static Pair <Integer,
                    Integer> count_ht(char s,
                                      int N)
{              
  // Check if initially all the 
  // coins are facing towards head 
  Pair <Integer,
        Integer> p = new Pair <Integer,
                               Integer> (0, 0);
  if(s == 'H')
  {
     p = new Pair <Integer,
                   Integer> ((int)Math.floor(N / 2.0),
                             (int)Math.ceil(N / 2.0));
  }
 
  // Check if initially all the coins 
  // are facing towards tail 
  else if(s == 'T')
  {
     p = new Pair <Integer,
                   Integer> ((int)Math.ceil(N / 2.0),
                             (int)Math.floor(N / 2.0));
  }
  return p;
}
 
public static void main(String[] args)
{
  char C = 'H';
  int N = 5;
  Pair <Integer,
        Integer> p = count_ht(C, N);
  System.out.println("Head = " + p.getKey());
  System.out.println("Tail = " + p.getValue());
}
}
 
// This code is contributed by divyeshrabadiya07

Python3

# Python3 program to Count total heads
# and tails after N flips in a coin
 
# Function to find count of head and tail
import math
def count_ht( s, N ):
     
    # Check if initially all the
    # coins are facing towards head
    if s == "H":
        h = math.floor( N / 2 )
        t = math.ceil( N / 2 )
         
    # Check if initially all the coins
    # are facing towards tail
    elif s == "T":
        h = math.ceil( N / 2 )
        t = math.floor( N / 2 )
         
    return [h, t]
 
# Driver Code
if __name__ == "__main__":
    C = "H"
    N = 5
    l = count_ht(C, n)
    print("Head = ", l[0])
    print("Tail = ", l[1])

C#

// C# program to count total heads
// and tails after N flips in a coin
using System;
 
class GFG{
     
// Function to find count of head and tail 
public static Tuple<int, int> count_ht(char s,
                                       int N)
{ 
     
    // Check if initially all the 
    // coins are facing towards head 
    Tuple<int, int> p = Tuple.Create(0, 0);
     
    if (s == 'H')
    {
        p = Tuple.Create((int)Math.Floor(N / 2.0),
                         (int)Math.Ceiling(N / 2.0));
    }
     
    // Check if initially all the coins 
    // are facing towards tail 
    else if (s == 'T')
    {
        p = Tuple.Create((int)Math.Ceiling(N / 2.0),
                         (int)Math.Floor(N / 2.0));
    }
    return p;
}
 
// Driver Code
static void Main()
{
    char C = 'H';
    int N = 5;
    Tuple<int, int> p = count_ht(C, N);
     
    Console.WriteLine("Head = " + p.Item1);
    Console.WriteLine("Tail = " + p.Item2);
}
}
 
// This code is contributed by divyesh072019

Javascript

<script>
 
// JavaScript program to count total heads
// and tails after N flips in a coin
 
// Function to find count of head and tail
function count_ht(s, N)
{
     
    // Check if initially all the
    // coins are facing towards head
    var p = [0,0];
    if(s == 'H')
    {
        p[0] = Math.floor(N / 2.0);
        p[1] = Math.ceil(N / 2.0);
    }
     
    // Check if initially all the coins
    // are facing towards tail
    else if(s == 'T')
    {
        p[0] = Math.ceil(N / 2.0);
        p[1] = Math.floor(N / 2.0);
    }
     
    return p;
}
 
// Driver code
var C = 'H';
var N = 5;
 
var p = count_ht(C, N);
 
document.write( "Head = " + (p[0]) + "<br>");
document.write( "Tail = " + (p[1]) + "<br>");
 
</script>
Producción: 

Head =  2
Tail =  3

 

Complejidad del tiempo: O(1)

Publicación traducida automáticamente

Artículo escrito por kashishmishra9911 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 *