Calcule el dinero colocado en cajas después de N días según las condiciones dadas

Dadas 7 cajas vacías b1, b2, b3, b4, b5, b6, b7 y un número entero N , la tarea es encontrar la cantidad total de dinero que se puede colocar en las cajas después de N días según las siguientes condiciones:

  1. Cada día, el dinero se puede poner solo en una caja en forma circular b1, b2, b3, b4, b5, b6, b7, b1, b2, ….. y así sucesivamente.
  2. En la casilla b1 , ponga 1 más que el dinero ya presente en la casilla b1 .
  3. En cada casilla excepto b1 , ponga 1 más que el dinero presente en la casilla anterior.

Ejemplos:

Entrada: N = 4
Salida: 15
Explicación:
Poner dinero en la caja b1 el día 1 = 1
Poner dinero en la caja b2 el día 2 = 2
Poner dinero en la caja b3 el día 3 = 3
Poner dinero en la caja b4 el día 4 = 4
Poner dinero en la caja b5 el día 5 = 5
Después del 5to día, cantidad total = 1 + 2 + 3 + 4 + 5 = 15

Entrada: N = 15
Salida: 66
Explicación: Después del día 15, la cantidad total = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 3 = 66

Enfoque: siga los pasos a continuación para resolver el problema

  1. El dinero gastado el día i es ((i – 1)/ 7) + ((i – 1) % 7 + 1), donde i se encuentra en el rango [1, N]
  2. Simule lo mismo para los días [1, N]
  3. Imprime el costo total.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for
// the above approach
#include <iostream>
using namespace std;
 
// Function to find the total money
// placed in boxes after N days
int totalMoney(int N)
{
     
    // Stores the total money
    int ans = 0;
 
    // Iterate for N days
    for(int i = 0; i < N; i++)
    {
         
        // Adding the Week number
        ans += i / 7;
 
        // Adding previous amount + 1
        ans += (i % 7 + 1);
    }
 
    // Return the total amount
    return ans;
}
 
// Driver code
int main()
{  
     
    // Input
    int N = 15;
 
    // Function call to find
    // total money placed
    cout << totalMoney(N);
}
 
// This code is contributed khushboogoyal499

Java

// Java program for
// the above approach
 
import java.io.*;
 
class GFG {
 
    // Function to find the total money
    // placed in boxes after N days
    public static int totalMoney(int N)
    {
 
        // Stores the total money
        int ans = 0;
 
        // Iterate for N days
        for (int i = 0; i < N; i++) {
 
            // Adding the Week number
            ans += i / 7;
 
            // Adding previous amount + 1
            ans += (i % 7 + 1);
        }
 
        // Return the total amount
        return ans;
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        // Input
        int N = 15;
 
        // Function call to find
        // total money placed
        System.out.println(
            totalMoney(N));
    }
}

Python

# Python program for
# the above approach
 
# Function to find the total money
# placed in boxes after N days
def totalMoney(N):
     
    # Stores the total money
    ans = 0
 
    # Iterate for N days
    for i in range(0, N):
      
        # Adding the Week number
        ans += i / 7
 
        # Adding previous amount + 1
        ans += (i % 7 + 1)
      
    # Return the total amount
    return ans
  
# Driver code
 
# Input
N = 15
 
# Function call to find
# total money placed
print(totalMoney(N))
 
# This code is contributed by shivanisinghss2110

C#

// C# program for
// the above approach
using System;
 
class GFG{
     
// Function to find the total money
// placed in boxes after N days
public static int totalMoney(int N)
{
     
    // Stores the total money
    int ans = 0;
 
    // Iterate for N days
    for(int i = 0; i < N; i++)
    {
         
        // Adding the Week number
        ans += i / 7;
 
        // Adding previous amount + 1
        ans += (i % 7 + 1);
    }
 
    // Return the total amount
    return ans;
}
 
// Driver code
static public void Main()
{
     
    // Input
    int N = 15;
 
    // Function call to find
    // total money placed
    Console.WriteLine(totalMoney(N));
}
}
 
// This code is contributed by offbeat

Javascript

<script>
 
// JavaScript Program to implement
// the above approach
 
    // Function to find the total money
    // placed in boxes after N days
    function totalMoney(N)
    {
 
        // Stores the total money
        let ans = 0;
 
        // Iterate for N days
        for (let i = 0; i < N; i++) {
 
            // Adding the Week number
            ans += Math.floor(i / 7);
 
            // Adding previous amount + 1
            ans += (i % 7 + 1);
        }
 
        // Return the total amount
        return ans;
    }
 
 
// Driver Code
 
    // Input
        let N = 15;
 
        // Function call to find
        // total money placed
       document.write(
            totalMoney(N));
 
</script>
Producción: 

66

 

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Enfoque eficiente: el enfoque anterior se puede optimizar averiguando la cantidad de semanas completadas y la cantidad de días restantes en la última semana. 

Siga los pasos para resolver el problema: 

  1. Inicialice las variables X e Y , para almacenar la cantidad de dinero que se puede colocar en las semanas completas y semanas parciales respectivamente.
  2. El dinero en cada semana se puede calcular como:
    • Semana   : 1 2 3 4 5 6 7 = 28 + (7 x 0)
    • Semana  : 2 3 4 5 6 7 8 = 28 + (7 x 1)
    • 3ra  Semana: 3 4 5 6 7 8 9 = 28 + (7 x 2)
    • Semana  : 4 5 6 7 8 9 10 = 28 + (7 x 3) y así sucesivamente.
  3. Por lo tanto, actualice:
    X = 28 + 7 x (Número de semanas completadas – 1)
    Y = Suma de días restantes + (Número de semanas completas * Número de días restantes en la última semana)
  4. Por lo tanto, la cantidad total es igual a X + Y. Imprime el monto total colocado.

A continuación se muestra la implementación del enfoque anterior: 

C++

// C++ Program to implement
// the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find total
// money placed in the box
int totalMoney(int N)
{
    // Number of complete weeks
    int CompWeeks = N / 7;
 
    // Remaining days in
    // the last week
    int RemDays = N % 7;
 
    int X = 28 * CompWeeks
            + 7 * (CompWeeks
                   * (CompWeeks - 1) / 2);
 
    int Y = RemDays
                * (RemDays + 1) / 2
            + CompWeeks * RemDays;
 
    int cost = X + Y;
 
    cout << cost << '\n';
}
 
// Driver Code
int main()
{
    // Input
    int N = 15;
 
    // Function call to find
    // the total money placed
    totalMoney(N);
 
    return 0;
}

Java

// Java program for above approach
 
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFG {
 
// Function to find total
// money placed in the box
static void totalMoney(int N)
{
    // Number of complete weeks
    int CompWeeks = N / 7;
   
    // Remaining days in
    // the last week
    int RemDays = N % 7;
   
    int X = 28 * CompWeeks
            + 7 * (CompWeeks
                   * (CompWeeks - 1) / 2);
   
    int Y = RemDays
                * (RemDays + 1) / 2
            + CompWeeks * RemDays;
   
    int cost = X + Y;
   
    System.out.print(cost);
}
 
 
    // Driver Code
    public static void main(String[] args)
    {
    // Input
    int N = 15;
   
    // Function call to find
    // the total money placed
    totalMoney(N);
    }
}
 
// This code is contributed by souravghosh0416.

C#

// C# program for the above approach
using System;
 
class GFG{
 
// Function to find total
// money placed in the box
static void totalMoney(int N)
{
     
    // Number of complete weeks
    int CompWeeks = N / 7;
    
    // Remaining days in
    // the last week
    int RemDays = N % 7;
    
    int X = 28 * CompWeeks + 7 *
    (CompWeeks * (CompWeeks - 1) / 2);
    
    int Y = RemDays * (RemDays + 1) / 2 +
          CompWeeks * RemDays;
    
    int cost = X + Y;
    
    Console.WriteLine(cost);
}   
 
// Driver Code
public static void Main()
{
     
    // Input
    int N = 15;
    
    // Function call to find
    // the total money placed
    totalMoney(N);
}
}
 
// This code is contriobuted by sanjoy_62

Javascript

<script>
 
// JavaScript Program to implement
// the above approach
 
// Function to find total
// money placed in the box
function totalMoney( N)
{
    // Number of complete weeks
    let CompWeeks = Math.floor(N / 7);
 
    // Remaining days in
    // the last week
    let RemDays = N % 7;
 
    let X = 28 * CompWeeks
            + 7 * Math.floor((CompWeeks
                   * (CompWeeks - 1) / 2));
 
    let Y = RemDays
                * Math.floor((RemDays + 1) / 2)
            + CompWeeks * RemDays;
 
    let cost = X + Y;
 
    document.write(cost ,'<br>');
}
 
// Driver Code
 
    // Input
    let N = 15;
 
    // Function call to find
    // the total money placed
    totalMoney(N);
 
</script>
Producción: 

66

 

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

Publicación traducida automáticamente

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