📜  n 个问题的不同可能评分和否定评分

📅  最后修改于: 2021-10-27 09:07:13             🧑  作者: Mango

鉴于问题的数量为n  ,并将正确答案标记为p  q  错误答案的标记。一个人可以尝试在考试中解决问题并获得p  标记答案是否正确,或q  如果答案错误,请标记,或无人看管问题并获得0  分数。任务是找出一个人可以在考试中获得的所有不同可能分数的数量。
例子:

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

方法:
迭代所有可能正确解决和未解决的问题。将分数存储在包含不同元素的集合中,记住存在正数的错误解决问题。
下面是上述方法的实现:

C++
// CPP program to find the count of
// all the different possible marks
// that one can score in the examination
#include
 
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 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
            hset = new HashSet();
 
        // 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
            hset = new HashSet();
 
        // 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


输出:
12

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程