1)Mежду пунктами А, Б, В, Г и Д построены дороги, протяженность которых приведена в таблице: Определите длину кратчайшего пути между пунктами А и Г, учитывая, что передвигаться можно только по построенным дорогам: 4 6 3 5 2)На рисунке изображена схема дорог, связывающих торговые точки А, Б, В, Г, Д, Е, Ж. По каждой дороге можно двигаться только в направлении, указанном стрелкой. Сколько существует различных путей от точки А до точки Ж? 3)Дан фрагмент электронной таблицы: В ячейку E6 введена формула =$А1*В4+$С2*D$4, а затем скопирована в ячейку D7. Какое значение в результате появится в ячейке D7? 10 20 22 12 4)В электронную таблицу занесли данные наблюдений за погодой в некотором населённом пункте. Приведены строки таблицы. Запишите формулу подсчёта средней температуры за указанный период времени: 5)Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a, b) (где a, b – целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x + a, y + b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные, уменьшается. Например, если Чертёжник находится в точке с координатами (7, -2), то команда Сместиться на (-2, 3) переместит Чертёжника в точку (5, 1). Запись Повтори k раз Команда1 Команда2 Команда3 Конец означает, что последовательность команд Команда1 Команда2 Команда3 повторится k раз. Чертёжнику был дан для исполнения следующий алгоритм: Сместиться на (4, -2) Повтори 5 раз Сместиться на (2, 5) Сместиться на (4, -1) Конец Сместиться на (-6, –7) Какую единственную команду надо выполнить Чертёжнику, чтобы вернуться в исходную точку, из которой он начал движение? Сместиться на (-28, –11) Сместиться на (-28, 11) Сместиться на (28, 11) Сместиться на (28, –11) 6)Все элементы массива A [1…10] равны 2. Чему будет равно значение элемента A[9] после выполнения фрагмента программы? for i : = 1 to 10 do A [ i ] : = A [ i ] + 2*i; 20 27 11 9 7)Доступ к файлу nn.docx, находящемуся на сервере do.org, осуществляется по протоколу http. Фрагменты адреса файла закодированы буквами от А до Ж. Запишите последовательность этих букв, кодирующую адрес указанного файла в сети Интернет. А) do Б) nn В) .docx Г) .org Д) http Е) / Ж) :// Д Б А Ж Г В Е
Умножение числа на 2 в двоичной системе эквивалентно его сдвигу влево на один разряд. При этом старший разряд старшей тетрады должен перейти в новую, третью тетраду или он будет утерян. Но по условию, после умножения число по-прежнему имеет два разряда, следовательно мы должны потерять старший разряд безболезненно, а это возможно только если он нулевой. Тогда первоначальное число должно быть записано как
а после удвоения его запись примет вид
Запишем сумму цифр исходного числа p1:
Теперь запишем сумму удвоенного числа p2:
По условию эти две суммы равны и мы составляем уравнение:
Полученное уравнение решается на множестве двоичных чисел. Поскольку исходное число двузначное, по крайней мере в старшем разряде оно содержит цифру, отличную от нуля. Следовательно, b3 не может равняться нулю и остается только положить b3=1. Тогда уравнение (1) примет следующий вид:
Учитывая, что каждый бит может принимать значения только 0 и 1, мы должны найти такие комбинации бит, которые дадут в сумме 7=4+2+1, потому что у нас в уравнении только такие коэффициенты. Сгруппируем члены в (2):
Полученная система уравнений будет иметь 7 вариантов решений (вариант a2=a1=a0=0 исключается в силу необходимости наличия цифры в старшем разряде), которым в старшем разряде будут соответствовать цифры от 001(2) до 111(2) или от 1(10) до 7(10).
ответ: 7
Замечание: Из (3) можно легко найти числа, которые соответствуют заданным условиям: 30, 45, 60, 75, 90, 105, 120 (все в десятичной системе счисления). В 16-ричной системе они запишутся как 1E, 2D, 3C, 4B, 5A, 69,
#include <stdio.h> #include <stdlib.h> int compare(void *a, void *b) { int va = *(int*)a; int vb = *(int*)b; if(va == vb) return 0; return va < vb ? -1 : 1; }
int max_index(void *base, int n, int width, int (*compare)(void *a, void *b)) { int i, j = 0; char max[width]; memcpy(max, base, width); for(i = 1; i < n; i++) { if( compare(base+i*width, max) > 0) { memcpy(max, base+i*width, width); j = i; } } return j; }
int main() { int n; scanf("%d", &n); int a[n]; for(int i = 0; i < n; i++) scanf("%d", &a[i]); printf("%d\n", a[max_index(a, n, sizeof(int), compare)]); }
Тогда первоначальное число должно быть записано как
а после удвоения его запись примет вид
Запишем сумму цифр исходного числа p1:
Теперь запишем сумму удвоенного числа p2:
По условию эти две суммы равны и мы составляем уравнение:
Полученное уравнение решается на множестве двоичных чисел.
Поскольку исходное число двузначное, по крайней мере в старшем разряде оно содержит цифру, отличную от нуля. Следовательно, b3 не может равняться нулю и остается только положить b3=1. Тогда уравнение (1) примет следующий вид:
Учитывая, что каждый бит может принимать значения только 0 и 1, мы должны найти такие комбинации бит, которые дадут в сумме 7=4+2+1, потому что у нас в уравнении только такие коэффициенты. Сгруппируем члены в (2):
Полученная система уравнений будет иметь 7 вариантов решений (вариант a2=a1=a0=0 исключается в силу необходимости наличия цифры в старшем разряде), которым в старшем разряде будут соответствовать цифры от 001(2) до 111(2) или от 1(10) до 7(10).
ответ: 7
Замечание: Из (3) можно легко найти числа, которые соответствуют заданным условиям: 30, 45, 60, 75, 90, 105, 120 (все в десятичной системе счисления). В 16-ричной системе они запишутся как 1E, 2D, 3C, 4B, 5A, 69,
#include <stdlib.h>
int compare(void *a, void *b) {
int va = *(int*)a;
int vb = *(int*)b;
if(va == vb) return 0;
return va < vb ? -1 : 1;
}
int max_index(void *base, int n, int width, int (*compare)(void *a, void *b)) {
int i, j = 0;
char max[width];
memcpy(max, base, width);
for(i = 1; i < n; i++) {
if( compare(base+i*width, max) > 0)
{
memcpy(max, base+i*width, width);
j = i;
}
}
return j;
}
int main() {
int n;
scanf("%d", &n);
int a[n];
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
printf("%d\n", a[max_index(a, n, sizeof(int), compare)]);
}