Diferentes notas posibles para n preguntas y puntuación negativa

Dado el número de preguntas como  n   , y puntos por la respuesta correcta como  p   q   puntos por la respuesta incorrecta. Uno puede intentar resolver la pregunta en un examen y obtener  p   puntos si la respuesta es correcta, o  q   puntos si la respuesta es incorrecta, o dejar la pregunta desatendida y obtener  0   puntos. La tarea es encontrar el recuento de todas las diferentes marcas posibles que uno puede obtener en el examen.
Ejemplos: 
 

Input: n = 2, p = 1, q = -1
Output: 5
The different possible marks are: -2, -1, 0, 1, 2

Input: n = 4, p = 2, q = -1
Output: 12

Enfoque: 
iterar a través de todo el número posible de problemas correctamente resueltos y no resueltos. Almacene las puntuaciones en un conjunto que contenga elementos distintos teniendo en cuenta que hay un número positivo de problemas resueltos incorrectamente.
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// CPP program to find the count of
// all the different possible marks
// that one can score in the examination
#include<bits/stdc++.h>
 
using namespace std;
 
    // Function to return
    // the count of distinct scores
    int scores(int n, int p, int q)
    {
        // Set to store distinct values
        set<int> hset;
 
        // iterate through all
        // possible pairs of (p, q)
        for (int i = 0; i <= n; i++)
        {
            for (int j = 0; j <= n; j++)
            {
 
                int correct = i;
                int not_solved = j;
                int incorrect = n - i - j;
 
                // if there are positive number
                // of incorrectly solved problems
                if (incorrect >= 0)
                    hset.insert(p * correct
                            + q * incorrect);
                else
                    break;
            }
        }
 
        // return the size of the set
        // containing distinct elements
        return hset.size();
    }
 
    // Driver code
    int main()
    {
 
        // Get the number of questions
        int n = 4;
 
        // Get the marks for correct answer
        int p = 2;
 
        // Get the marks for incorrect answer
        int q = -1;
 
        // Get the count and print it
        cout << (scores(n, p, q));
    }
 
// This code is contributed by
// Surendra_Gangwar

Java

// Java program to find the count of
// all the different possible marks
// that one can score in the examination
 
import java.util.*;
 
class GFG {
 
    // Function to return
    // the count of distinct scores
    static int scores(int n, int p, int q)
    {
        // Set to store distinct values
        HashSet<Integer>
            hset = new HashSet<Integer>();
 
        // iterate through all
        // possible pairs of (p, q)
        for (int i = 0; i <= n; i++) {
            for (int j = 0; j <= n; j++) {
 
                int correct = i;
                int not_solved = j;
                int incorrect = n - i - j;
 
                // if there are positive number
                // of incorrectly solved problems
                if (incorrect >= 0)
                    hset.add(p * correct
                             + q * incorrect);
                else
                    break;
            }
        }
 
        // return the size of the set
        // containing distinct elements
        return hset.size();
    }
 
    // Driver code
    public static void main(String[] args)
    {
 
        // Get the number of questions
        int n = 4;
 
        // Get the marks for correct answer
        int p = 2;
 
        // Get the marks for incorrect answer
        int q = -1;
 
        // Get the count and print it
        System.out.println(scores(n, p, q));
    }
}

Python3

# Python3 program to find the count of
# all the different possible marks
# that one can score in the examination
 
# Function to return the count of
# distinct scores
def scores(n, p, q):
     
    # Set to store distinct values
    hset = set()
 
    # Iterate through all possible
    # pairs of (p, q)
    for i in range(0, n + 1):
        for j in range(0, n + 1):
 
            correct = i
            not_solved = j
            incorrect = n - i - j
 
            # If there are positive number
            # of incorrectly solved problems
            if incorrect >= 0:
                hset.add(p * correct +
                         q * incorrect)
            else:
                break
 
    # return the size of the set
    # containing distinct elements
    return len(hset)
     
# Driver code
if __name__ == "__main__":
     
    # Get the number of questions
    n = 4
 
    # Get the marks for correct answer
    p = 2
 
    # Get the marks for incorrect answer
    q = -1
 
    # Get the count and print it
    print(scores(n, p, q))
     
# This code is contributed by Rituraj Jain

C#

// C# program to find the count of
// all the different possible marks
// that one can score in the examination
using System;
using System.Collections.Generic;
 
class GFG
{
 
    // Function to return
    // the count of distinct scores
    static int scores(int n, int p, int q)
    {
        // Set to store distinct values
        HashSet<int>
            hset = new HashSet<int>();
 
        // iterate through all
        // possible pairs of (p, q)
        for (int i = 0; i <= n; i++)
        {
            for (int j = 0; j <= n; j++)
            {
 
                int correct = i;
                int not_solved = j;
                int incorrect = n - i - j;
 
                // if there are positive number
                // of incorrectly solved problems
                if (incorrect >= 0)
                    hset.Add(p * correct
                            + q * incorrect);
                else
                    break;
            }
        }
 
        // return the size of the set
        // containing distinct elements
        return hset.Count;
    }
 
    // Driver code
    public static void Main()
    {
 
        // Get the number of questions
        int n = 4;
 
        // Get the marks for correct answer
        int p = 2;
 
        // Get the marks for incorrect answer
        int q = -1;
 
        // Get the count and print it
        Console.WriteLine(scores(n, p, q));
    }
}
 
/* This code contributed by PrinciRaj1992 */

Javascript

<script>
 
// JavaScript program to find the count of
// all the different possible marks
// that one can score in the examination
 
    // Function to return
    // the count of distinct scores
    function scores(n, p, q)
    {
        // Set to store distinct values
        let hset = new Set();
 
        // iterate through all
        // possible pairs of (p, q)
        for (let i = 0; i <= n; i++) {
            for (let j = 0; j <= n; j++) {
 
                let correct = i;
                let not_solved = j;
                let incorrect = n - i - j;
 
                // if there are positive number
                // of incorrectly solved problems
                if (incorrect >= 0)
                    hset.add(p * correct
                             + q * incorrect);
                else
                    break;
            }
        }
 
        // return the size of the set
        // containing distinct elements
        return hset.size;
    }
     
// Driver Code
 
           // Get the number of questions
        let n = 4;
 
        // Get the marks for correct answer
        let p = 2;
 
        // Get the marks for incorrect answer
        let q = -1;
 
        // Get the count and print it
        document.write(scores(n, p, q));
         
</script>
Producción: 

12

 

Publicación traducida automáticamente

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