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

Основы программирования

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

Функция F последовательности цифр в десятичной записи числаn ставит в соответствие единицу, если n делится на 14,и ноль в противном случае. Какая из приведенныхниже функций на последовательности десятичных цифр числа nявляется индуктивным расширением функции F?

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

Варианты ответа
Остаток от деления числа n на 165.
Пара (остаток от деления числа n на 52, остаток от деления числа n на 21). (Верный ответ)
Пара (остаток от деления числа n на 57, остаток от деления числа n на 35).
Похожие вопросы
Функция F последовательности цифр в десятичной записи числаn ставит в соответствие единицу, если n делится на 7,и ноль в противном случае. Какая из приведенныхниже функций на последовательности десятичных цифр числа nявляется индуктивным расширением функции F?
Функция F последовательности цифр в десятичной записи числаn ставит в соответствие единицу, если n делится на 15,и ноль в противном случае. Какая из приведенныхниже функций на последовательности десятичных цифр числа nявляется индуктивным расширением функции F?
На вход следующей программе передаетсяпоследовательность целых чисел в диапазоне от 0 до 9,представляющая цифры десятичной записи целого числа n.Программа определяет, делится ли число n на 75(символом процента '%' обозначается операциянахождения остатка от деления первого числа на второе):
    цел последовательность p; // Цифры числа n    цел s, r, d;    . . .    s := 0; r := 0;    встать в начало последовательности p;    цикл пока есть непрочитанные элементы в посл-ти p    | прочесть очередной элемент посл-ти p в (вых: d);    | s := s + d;             // s -- сумма цифр    | r := (r % 10) * 10 + d; // r -- число из 2-х    конец цикла               //      последних цифр    ответ := (          // n делится на 75, когда        s % 3 == 0  и   //     s делится на 3  и        r % 25 == 0     //     r делится на 25    );
В ней используются три вспомогательные переменныеs, r, d. Можно ли упроститьпрограмму, использовав меньшее количество вспомогательныхпеременных? (Последовательность разрешается читать только один раз.)
Следующий фрагмент программы вычисляет сумму четырехпоследних элементов последовательности p:
    вещ последовательность p;    вещ x, y, z, t;    . . .    x := 0.0; y := 0.0; z := 0.0; t := 0.0;    встать в начало последовательности p;    цикл пока есть непрочитанные элементы в посл-ти p    | x := y; y := z; z := t;    | прочесть очередной элемент посл-ти p в (вых: t);    конец цикла    ответ := x + y + z + t;
В нем используются четыре вспомогательные переменныеx, y, z, t. Можно ли упроститьпрограмму, использовав меньшее количество вспомогательныхпеременных? (Последовательность разрешается читать только один раз.)
Рассмотрим следующий фрагмент программы, вычисляющейчастное q и остаток r от деленияцелых чисел a, b:
  дано: целые числа a >= 0, b > 0  цел q, r, e, m;  q := 0; r := a; e := 1; m := b  цикл пока r >= b  | если 2*m <= r  | | то e := e*2; m := m*2;  | иначе если m > r  | | то e := e/2; m := m/2;  | иначе  | | утверждение: m <= r  и  r < 2*m  | | q := q + e; r := r - m;  | конец если  конец цикла  // q и r -- частное и остаток от деления a на b
Какое условие является инвариантом цикла?
Прототип функции, которая ищет вхождение строкиs2 в строку s1,выглядит следующим образом:
    int find(char *s1, char *s2);
функция возвращает смещение подстрокиs2 относительно начала строки s1в случае успеха или (-1) в случае неудачи.Можно ли воспользоваться функцией find в приведенном нижефрагменте программы(будут ли выданы сообщения об ошибках или предупрежденияпри компиляции этого фрагмента)?
    void f(char s[1024], const char p[64]) {        int pos = find(s, p);        . . .    }
Следующая программа вычисляет количествовхождений фрагмента "xyz" в последовательностьсимволов:
    последовательность символов p;    цел n;    символ c1, c2, c3;    . . .    n := 0;    // Инициализируем переменные c1, c2, c3 пробелами    c1 = ' '; c2 = ' '; c3 = ' ';    встать в начало последовательности p;    цикл пока есть непрочитанные элементы в посл-ти p    | c1 := c2; c2 := c3;    | прочесть очередной элемент посл-ти p в (вых: c3);    | если c1 == 'x' и c2 == 'y' и c3 == 'z'    | | то n := n + 1;    | конец если    конец цикла    ответ := n;
В ней используются четыре вспомогательные переменныеn, c1, c2, c3. Можно ли упроститьпрограмму, использовав меньшее количество вспомогательныхпеременных? (Последовательность разрешается читать только один раз.)
Пусть регистры R1 и R2 содержат два целых числа xи y. Указать, что будет содержать регистр R0 после выполненияследующего фрагмента кода на RTL (знаком конъюнкции & обозначенаоперация побитового логического умножения):
    R0 := 1;L1:    CC0 := R2 - 0;    // сравнить R2 с нулем    if (eq) goto L2;  // переход, если равно    CC0 := R2 & 1;    // проверить младший бит R2    if (eq) goto L3;  // переход, если ноль    R2 := R2 - 1;    R0 := R0 * R1;    goto L4;L3:    R2 := R2 / 2;    R1 := R1 * R1;L4:    goto L1;L2:
Пусть регистры R1 и R2 содержат два целых числа xи y. Указать, что будет содержать регистр R0 после выполненияследующего фрагмента кода на RTL (знаком конъюнкции & обозначенаоперация побитового логического умножения):
    R0 := 0;L1:    CC0 := R2 - 0;    // сравнить R2 с нулем    if (eq) goto L2;  // переход, если равно    CC0 := R2 & 1;    // проверить младший бит R2    if (eq) goto L3;  // переход, если ноль    R2 := R2 - 1;    R0 := R0 + R1;    goto L4;L3:    R2 := R2 / 2;    R1 := R1 * 2;L4:    goto L1;L2:
Пусть описан тип R2Vector, представляющий векторна плоскости с вещественными координатами,
    typedef struct {        double x;        double y;    } R2Vector;
также описаны три переменныеu, v и w типа вектори вещественная переменная s:
    R2Vector u, v, w;    double s;
при этом переменная u содержат конкретный векторединичной длины, а вектор v получается изu вращением на 30 градусов по часовойстрелке. Указать, чему будет приблизительно равнозначение вещественной переменной s в результатевыполнения следующего фрагмента программы:
    w.x = (-u.y); w.y = u.x;    s = v.x * w.x + v.y * w.y;