База ответов ИНТУИТ

Программирование

<<- Назад к вопросам

Какое утверждение является инвариантом для следующегофрагмента программы (т.е. из справедливости утверждениядо выполнения фрагмента программы вытекает справедливость утвержденияпосле выполнения)? Предполагается, чтоn не меньше k.Восклицательным знаком обозначается операция вычисления факториала.
    int n, k, c;    . . .    c *= (n+1);    c /= (n+1-k);    ++n;

(Отметьте один правильный вариант ответа.)

Варианты ответа
Утверждение c = (n+k)! / (k! * (n-k)!).
Утверждение c = (n+k)! / (n! * (n-k)!).
Утверждение c = n! / (k! * (n-k)!). (Верный ответ)
Утверждение c = (n-k)! / (k! * (n+k)!).
Похожие вопросы
Какое утверждение является инвариантом для следующегофрагмента программы (т.е. из справедливости утверждениядо выполнения фрагмента программы вытекает справедливость утвержденияпосле выполнения)? Предполагается, что n > 0.
    double r, x; int n;    . . .    r *= -x;    r *= n/(n+1);    ++n;
Какое утверждение является инвариантом для следующегофрагмента программы (т.е. из справедливости утверждениядо выполнения фрагмента программы вытекает справедливость утвержденияпосле выполнения)? Предполагается, что значение переменнойn неотрицательно.
    double r, x; int n;    . . .    r *= x*x;    r /= ((n+1)*(n+2));    n += 2;
Рассмотрим следующий фрагмент программы, вычисляющейчастное q и остаток r от деленияцелых чисел a, b:
    // дано: целые числа a >= 0, b > 0    int a, b;    . . .    int q = 0, r = a;    int e = 1, m = b;    while (r >= b) {        if (2*m <= r) {            e *= 2; m *= 2;        } else if (m > r) {            e /= 2; m /= 2;        } else {            // утверждение: m <= r && r < 2*m            q += e; r -= m;        }    }    // q и r - частное и остаток от деления a на b
Какое условие является инвариантом цикла?
Пусть - некоторое условие, не зависящееот значения переменной x.Укажите, чему может быть равно значение xв результате выполнения следующего фрагмента программы(многоточием обозначен текст, не содержащийпеременной x):
int x = 1;while () {    . . .    if () {        x = 2;    } else {        x = 3;    }}
Пусть расположенный в статической памятицелочисленный массив a описан как
static int a[] = {    1, 1, 2, 2, 3, 3, 4, 4, 5, 5};
Пусть в программе задана функция суммирования массивас прототипом
int sum(const int *m, int n);
где m - константный указатель на началомассива, n - число его элементов. Укажите,чему будет равно значение переменной s врезультате выполнения следующего фрагмента программы:
    int s = sum(a+5, 3);
Пусть расположенный в статической памятицелочисленный массив a описан как
static int a[] = {    10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
Пусть в программе задана функция суммирования массивас прототипом
int sum(const int *m, int n);
где m - константный указатель на началомассива, n - число его элементов. Укажите,чему будет равно значение переменной s врезультате выполнения следующего фрагмента программы:
    int s = sum(a+3, 4);
Пусть расположенный в статической памятицелочисленный массив a описан как
static int a[] = {    1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Пусть в программе задана функция суммирования массивас прототипом
int sum(const int *m, int n);
где m - константный указатель на началомассива, n - число его элементов. Укажите,чему будет равно значение переменной s врезультате выполнения следующего фрагмента программы:
    int s = sum(a+4, 4);
Пусть a = a(x) -некоторое условие, зависящее только отзначения переменной x.Укажите, чему может быть равно значение переменной yв результате выполнения следующего фрагмента программы:
int x = 1;int y = 1;while (a(x)) {    . . .    if (y < 0) {        x = 2;        y = 10;    } else {        x = 1;        y = 20;    }}
Функция с прототипом
double root(double a, double b, double eps);
находит корень фиксированной функции
double f(double x);
на отрезке [a, b] методом деления отрезка пополамс точностью eps.Пусть функция f(x) определена следующимобразом:
double f(double x) {    return sin(x);}
Каким будет приблизительное значение переменной xв результате выполнения следующего фрагмента программы:
    double x = root(-1., 9., 0.000001);
Функция с прототипом
double root(double a, double b, double eps);
находит корень фиксированной функции
double f(double x);
на отрезке [a, b] методом деления отрезка пополамс точностью eps.Пусть функция f(x) определена следующимобразом:
double f(double x) {    double p = 1.;    double r = 1.;    while (r < 5.5) {        p *= (x - r);        r += 1.;    }    return p;}
Каким будет приблизительное значение переменной xв результате выполнения следующего фрагмента программы:
    double x = root(0., 5.9, 0.000001);