📜  n个问题和否定标记的不同可能标记

📅  最后修改于: 2021-06-25 15:21:46             🧑  作者: Mango

给定的问题数量为n ,并将正确答案标记为pq标记错误答案。一个人可以尝试在考试中解决问题并获得其中一个p标记答案是否正确,或者q标记答案是否错误,或者不理question问题而获得答案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 */


输出:
12