Как определить, сколько раз оператор внутри цикла будет выполняться с условными операторами

Есть тест, состоящий из 12 вопросов. каждый вопрос должен иметь ценность более 4 баллов. сумма всех вопросов должна быть равна 100. Также все вопросы должны иметь целочисленное значение. поэтому возможная комбинация может быть 5,5,5,5,5,5,5,5,5,5,45

существует метод, который теоретически даст такой результат:

// this method will return the possible number of tests
public static double PosibleNumberOfTests()
{
    int q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12; // each question value

    double counter=0; // if there is a valid combination then counter will be increased by 1

    for (q12 = 5; q12 < 46; q12++)
    {
        for (q11 = 5; q11 < 46; q11++)
        {
            for (q10 = 5; q10 < 46; q10++)
            {
                for (q9 = 5; q9 < 46; q9++)
                {
                    for (q8 = 5; q8 < 46; q8++)
                    {
                        for (q7 = 5; q7 < 46; q7++)
                        {
                            for (q6 = 5; q6 < 46; q6++)
                            {
                                for (q5 = 5; q5 < 46; q5++)
                                {
                                    for (q4 = 5; q4 < 46; q4++)
                                    {
                                        for (q3 = 5; q3 < 46; q3++)
                                        {
                                            for (q2 = 5; q2 < 46; q2++)
                                            {
                                                for (q1 = 5; q1 < 46; q1++)
                                                {
                                                    if (q1 + q2 + q3 + q4 + q5 + q6 + q7 + q8 + q9 + q10 + q11 + q12 == 100)
                                                        counter++;  // here is what we need. How many times will this line be executed!
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

    }
    return counter;
}

обратите внимание, что я создал каждый цикл для значений меньше 46, потому что, если все вопросы должны иметь значение больше 4, то, например, вопрос будет стоить 50 баллов.

Править

Извините, люди, я думаю, что не объясняю себя четко. Я задал 12 вопросов наугад. В этом примере может быть тест со 100 вопросами. Мне нужно что-то вроде того, что dlev упомянул в своем комментарии. Я также знаю, что могу делать перерывы в циклах, чтобы сделать метод более эффективным. если сумма больше 100, тогда зачем продолжать цикл, просто выйдите из соответствующего цикла

5
задан Tono Nam 8 October 2011 в 01:47
поделиться