пятница, 23 декабря 2016 г.

Факультатив_11 класс

1. Найти сумму чисел X=1101112 и Y=1358. Ответ за­пи­ши­те в дво­ич­ной си­сте­ме счис­ле­ния.


2. Дан фраг­мент таб­ли­цы ис­тин­но­сти вы­ра­же­ния F:



x1x2x3x4x5x6F
0101111
1010110
0101101


Каким вы­ра­же­ни­ем может быть F?

1) x1 ∨ x2 ∨ x3 ∨ ¬x4 ∨ ¬x5 ∨ ¬x6
2) ¬x1 ∨ x2 ∨ ¬x3 ∨ x4 ∨ ¬x5 ∨ ¬x6
3) x1 ∧ x2 ∧ ¬x3 ∧ ¬x4 ∧ x5 ∧ x6
4) ¬x1 ∧ ¬x2 ∧ x3 ∧ x4 ∧ x5 ∧ x6
3. На ри­сун­ке схема дорог Н-ского рай­о­на изоб­ра­же­на в виде графа, в таб­ли­це со­дер­жат­ся све­де­ния о дли­нах этих дорог (в ки­ло­мет­рах).















П1П2П3П4П5П6П7
П1572025
П2572242821
П322238
П42042733
П5823
П62579
П7218339


Так как таб­ли­цу и схему ри­со­ва­ли не­за­ви­си­мо друг от друга, ну­ме­ра­ция населённых пунк­тов в таб­ли­це никак не свя­за­на с бук­вен­ны­ми обо­зна­че­ни­я­ми на графе. Опре­де­ли­те длину до­ро­ги из пунк­та А в пункт Г. В от­ве­те за­пи­ши­те целое число.
4. Для груп­по­вых опе­ра­ций с фай­ла­ми ис­поль­зу­ют­ся мас­ки имён фай­лов. Маска пред­став­ля­ет собой по­сле­до­ва­тель­ность букв, цифр и про­чих до­пу­сти­мых в име­нах фай­лов сим­во­лов, в ко­то­рых также могут встре­чать­ся сле­ду­ю­щие сим­во­лы:
Сим­вол «?» (во­про­си­тель­ный знак) озна­ча­ет ровно один про­из­воль­ный сим­вол.
Сим­вол «*» (звёздоч­ка) озна­ча­ет любую по­сле­до­ва­тель­ность сим­во­лов про­из­воль­ной длины, в том числе «*» может за­да­вать и пу­стую по­сле­до­ва­тель­ность.
Опре­де­ли­те, какое из ука­зан­ных имён фай­лов НЕ удо­вле­тво­ряет маске: ?ell*.??

1) yell.ow
2) fellow.rа
3) tell_me.tu
4) bell.lab
5. Для ко­ди­ро­ва­ния не­ко­то­рой по­сле­до­ва­тель­но­сти, со­сто­я­щей из букв А, Б, В, Г и Д, ис­поль­зу­ет­ся не­рав­но­мер­ный дво­ич­ный код, поз­во­ля­ю­щий од­но­знач­но де­ко­ди­ро­вать по­лу­чен­ную дво­ич­ную по­сле­до­ва­тель­ность. Вот этот код: А – 0; Б – 1011; В – 100; Г – 111; Д – 1010. Тре­бу­ет­ся со­кра­тить для одной из букв длину ко­до­во­го слова так, чтобы код по-преж­не­му можно было де­ко­ди­ро­вать од­но­знач­но. Коды осталь­ных букв ме­нять­ся не долж­ны.
Каким из ука­зан­ных спо­со­бов это можно сде­лать?
1) это не­воз­мож­но
2) для буквы Б – 10
3) для буквы В – 00
4) для буквы Г – 11
6. На экра­не есть два окна, в каж­дом из ко­то­рых за­пи­са­но по числу. Ис­пол­ни­тель СУМ­МА­ТОР имеет толь­ко две ко­ман­ды, ко­то­рым при­сво­е­ны но­ме­ра:
1. За­пи­ши сумму чисел в пер­вое окно
2. За­пи­ши сумму чисел во вто­рое окно
Вы­пол­няя ко­ман­ду номер 1, СУМ­МА­ТОР скла­ды­ва­ет числа в двух окнах и за­пи­сы­ва­ет ре­зуль­тат в пер­вое окно, а вы­пол­няя ко­ман­ду номер 2, за­ме­ня­ет этой сум­мой число во вто­ром окне. На­пи­ши­те про­грам­му, со­дер­жа­щую не более 5 ко­манд, ко­то­рая из пары чисел 1 и 2 по­лу­ча­ет пару чисел 13 и 4. Ука­жи­те лишь но­ме­ра ко­манд.
На­при­мер, про­грам­ма 21211 – это про­грам­ма:
За­пи­ши сумму чисел во вто­рое окно
За­пи­ши сумму чисел в пер­вое окно
За­пи­ши сумму чисел во вто­рое окно
За­пи­ши сумму чисел в пер­вое окно
За­пи­ши сумму чисел в пер­вое окно
ко­то­рая пре­об­ра­зу­ет пару чисел 1 и 0 в пару чисел 8 и 3.

7. На пред­при­я­тии ра­бо­та­ют 100 че­ло­век. Каж­дый из них вла­де­ет как ми­ни­мум одним ино­стран­ным язы­ком (ан­глий­ским, не­мец­ким или фран­цуз­ским). На сле­ду­ю­щей диа­грам­ме от­ра­же­но ко­ли­че­ство че­ловек, вла­де­ю­щих каж­дым из язы­ков.

Вто­рая диа­грам­ма от­ра­жа­ет ко­ли­че­ство че­ло­век, зна­ю­щих толь­ко один язык, толь­ко два языка или все три ино­стран­ных языка.

Опре­де­лить ко­ли­че­ство че­ло­век, вла­де­ю­щих толь­ко ан­глий­ским язы­ком, если го­во­рят на ан­глий­ском и не­мец­ком, но не знают фран­цуз­ско­го 2 че­ло­ве­ка.
8. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния):




Бей­сикПас­каль
DIM N, S AS INTEGER
N = 24
S = 0
WHILE N <= 28
S = S + 20
N = N + 2
WEND
PRINTS
var n, s: integer;
begin
    n := 24;
    s := 0;
    while n <= 28 do
    begin
        s := s + 20;
    n := n + 2
    end;
    write(s)
end.
СиАл­го­рит­ми­че­ский язык
#include <stdio.h>
void main()
{
    int n, s;
    n = 24;
    s = 0;
    while (n <= 28)
    {
        s = s + 20;
        n = n + 2;
    }
    printf("%d", s);
}
алг
нач
цел n, s
n := 24
s := 0
нц пока n <= 28
    s := s + 20
    n := n + 2
кц
вывод s
кон

9. Про­из­во­дит­ся четырёхка­наль­ная (квад­ро) зву­ко­за­пись с ча­сто­той дис­кре­ти­за­ции 48 кГц и 32-бит­ным раз­ре­ше­ни­ем. За­пись длит­ся 2 ми­ну­ты, её ре­зуль­та­ты за­пи­сы­ва­ют­ся в файл, сжа­тие дан­ных не про­из­во­дит­ся. Какая из при­ведённых ниже ве­ли­чин наи­бо­лее близ­ка к раз­ме­ру по­лу­чен­но­го файла?


1) 15 Мбайт
2) 27 Мбайт
3) 42 Мбайт
4) 88 Мбайт
10. Все 4-бук­вен­ные слова, со­став­лен­ные из букв В, И, Р, Т, за­пи­са­ны в ал­фа­вит­ном по­ряд­ке.

Вот на­ча­ло спис­ка:
1. ВВВВ
2. ВВВИ
3. ВВВР
4. ВВВТ
5. ВВИВ
……
За­пи­ши­те слово, ко­то­рое стоит на 249-м месте от на­ча­ла спис­ка.
11. По­сле­до­ва­тель­ность чисел Фи­бо­нач­чи за­да­ет­ся ре­кур­рент­ным со­от­но­ше­ни­ем:
F(1) = 1
F(2) = 1
F(n) = F(n–2) + F(n–1), при n >2, где n – на­ту­раль­ное число.
Чему равно вось­мое число в по­сле­до­ва­тель­но­сти Фи­бо­нач­чи?
В от­ве­те за­пи­ши­те толь­ко на­ту­раль­ное число.
12. В тер­ми­но­ло­гии сетей TCP/IP мас­кой сети на­зы­ва­ет­ся дво­ич­ное число, опре­де­ля­ю­щее, какая часть IP-ад­ре­са узла сети от­но­сит­ся к ад­ре­су сети, а какая — к ад­ре­су са­мо­го узла в этой сети. Обыч­но маска за­пи­сы­ва­ет­ся по тем же пра­ви­лам, что и IP-адрес. Адрес сети по­лу­ча­ет­ся в ре­зуль­та­те при­ме­не­ния по­раз­ряд­ной конъ­юнк­ции к за­дан­но­му IP-ад­ре­су узла и маске. По за­дан­ным IP-ад­ре­су узла и маске опре­де­ли­те адрес сети.

IP-адрес узла: 208.64.195.128
Маска: 255.255.224.0

При за­пи­си от­ве­та вы­бе­ри­те из при­ведённых в таб­ли­це чисел че­ты­ре эле­мен­та IP-ад­ре­са сети и за­пи­ши­те в нуж­ном по­ряд­ке со­от­вет­ству­ю­щие им буквы без ис­поль­зо­ва­ния точек.

ABCDEFGH
064128192195208224255

При­мер. Пусть ис­ко­мый IP-адрес: 192.168.128.0, и дана таб­ли­ца:

ABCDEFGH
1281682558127017192

В этом слу­чае пра­виль­ный ответ будет за­пи­сан в виде: HBAF.
13. В ма­ра­фон­ском за­бе­ге участ­ву­ют 87 че­ло­век. Спе­ци­аль­ное устрой­ство ре­ги­стри­ру­ет про­хож­де­ние каж­дым участ­ни­ком не­ко­то­рой про­ме­жу­точ­ной от­мет­ки, за­пи­сы­вая его номер с ис­поль­зо­ва­ни­ем ми­ни­маль­но воз­мож­но­го ко­ли­че­ства бит, оди­на­ко­во­го для каж­до­го участ­ни­ка. Каков ин­фор­ма­ци­он­ный объем со­об­ще­ния, за­пи­сан­но­го устрой­ством, если дан­ную про­ме­жу­точ­ную от­мет­ку ми­но­ва­ли толь­ко 64 из 87 вы­шед­ших на старт участ­ни­ков? (Ответ дайте в бай­тах.)

14. Ис­пол­ни­тель Ре­дак­тор по­лу­ча­ет на вход стро­ку цифр и пре­об­ра­зо­вы­ва­ет её. Ре­дак­тор может вы­пол­нять две ко­ман­ды, в обеих ко­ман­дах v и w обо­зна­ча­ют це­поч­ки цифр.
А) за­ме­нить (v, w).
Эта ко­ман­да за­ме­ня­ет в стро­ке пер­вое слева вхож­де­ние це­поч­ки v на це­поч­ку w. На­при­мер, вы­пол­не­ние ко­ман­ды
за­ме­нить (111, 27)
пре­об­ра­зу­ет стро­ку 05111150 в стро­ку 0527150.
Если в стро­ке нет вхож­де­ний це­поч­ки v, то вы­пол­не­ние ко­ман­ды за­ме­нить (v, w) не ме­ня­ет эту стро­ку.
Б) на­шлось (v).
Эта ко­ман­да про­ве­ря­ет, встре­ча­ет­ся ли це­поч­ка v в стро­ке ис­пол­ни­те­ля Ре­дак­тор. Если она встре­ча­ет­ся, то ко­ман­да воз­вра­ща­ет ло­ги­че­ское зна­че­ние «ис­ти­на», в про­тив­ном слу­чае воз­вра­ща­ет зна­че­ние «ложь». Стро­ка ис­пол­ни­те­ля при этом не из­ме­ня­ет­ся.
Цикл
  ПОКА усло­вие
    по­сле­до­ва­тель­ность ко­манд
  КОНЕЦ ПОКА
вы­пол­ня­ет­ся, пока усло­вие ис­тин­но.
В кон­струк­ции
  ЕСЛИ усло­вие
    ТО ко­ман­да1
    ИНАЧЕ ко­ман­да2
  КОНЕЦ ЕСЛИ
вы­пол­ня­ет­ся ко­ман­да1 (если усло­вие ис­тин­но) или ко­ман­да2 (если усло­вие ложно).

Ниже при­ве­де­на про­грам­ма для ис­пол­ни­те­ля Ре­дак­тор.
НА­ЧА­ЛО
ПОКА на­шлось (722) ИЛИ на­шлось (557)
  ЕСЛИ на­шлось (722)
    ТО за­ме­нить (722, 57)
    ИНАЧЕ за­ме­нить (557, 72)
  КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

На вход этой про­грам­ме по­да­ет­ся стро­ка, со­сто­я­щая из 55 цифр; по­след­няя цифра в стро­ке — цифра 7, а осталь­ные цифры — пятёрки. Какая стро­ка по­лу­чит­ся в ре­зуль­та­те при­ме­не­ния про­грам­мы к этой стро­ке? В от­ве­те за­пи­ши­те по­лу­чен­ную стро­ку.
15. На ри­сун­ке изоб­ра­же­на схема дорог, свя­зы­ва­ю­щих го­ро­да А, Б, В, Г, Д, Е, К, Л, М, Н, П, Р, Т. По каж­дой до­ро­ге можно дви­гать­ся толь­ко в одном на­прав­ле­нии, ука­зан­ном стрел­кой.
Сколь­ко су­ще­ству­ет раз­лич­ных путей из го­ро­да А в город Т?


16. За­пи­ши­те число 128 в пя­те­рич­ной си­сте­ме счис­ле­ния. В от­ве­те ука­жи­те толь­ко цифры, ос­но­ва­ние си­сте­мы счис­ле­ния пи­сать не нужно.
17. В языке за­про­сов по­ис­ко­во­го сер­ве­ра для обо­зна­че­ния ло­ги­че­ской опе­ра­ции «ИЛИ» ис­поль­зу­ет­ся сим­вол «|», а для ло­ги­че­ской опе­ра­ции «И» — сим­вол «&».
В таб­ли­це при­ве­де­ны за­про­сы и ко­ли­че­ство най­ден­ных по ним стра­ниц не­ко­то­ро­го сег­мен­та сети Ин­тер­нет.



За­просНай­де­но стра­ниц
(в ты­ся­чах)
Мороз | Солн­це3300
Солн­це2000
Мороз & Солн­це200


Какое ко­ли­че­ство стра­ниц (в ты­ся­чах) будет най­де­но по за­про­су Мороз? Счи­та­ет­ся, что все за­про­сы вы­пол­ня­лись прак­ти­че­ски од­но­вре­мен­но, так что набор стра­ниц, со­дер­жа­щих все ис­ко­мые слова, не из­ме­нял­ся за время вы­пол­не­ния за­про­сов.
18. Для ка­ко­го из при­ведённых чисел X ис­тин­но ло­ги­че­ское усло­вие: ¬((X крат­но 5)  (X крат­но 25))?

1) 37
2) 59
3) 65
4) 125 
19. В про­грам­ме опи­сан од­но­мер­ный це­ло­чис­лен­ный мас­сив A с ин­дек­са­ми от 0 до 10. Ниже пред­став­лен фраг­мент этой про­грам­мы, в ко­то­ром зна­че­ния эле­мен­тов мас­си­ва сна­ча­ла за­да­ют­ся, а затем ме­ня­ют­ся.

for i : = 0 to 10 do
A[i] : = i;
for i : = 0 to 5 do begin
A[10-i] : = A[9-i];
A[i] : = A[i+1];
end;

Чему будут равны эле­мен­ты этого мас­си­ва?


1) 0 1 2 3 4 5 6 7 8 9 10
2) 0 1 2 3 4 5 6 7 8 9 9
3) 1 2 3 4 5 5 5 6 7 8 9
4) 1 2 3 4 5 6 5 4 3 2 1
20. Ниже на четырёх язы­ках за­пи­сан ал­го­ритм. По­лу­чив на вход число x, этот ал­го­ритм пе­ча­та­ет два числа: a и b. Ука­жи­те наи­мень­шее из таких чисел x, при вводе ко­то­рых ал­го­ритм пе­ча­та­ет сна­ча­ла 13, а потом 5.

Бей­сикПас­каль

DIM X, A, B, C AS INTEGER
INPUT X
A = 0: B = 10
WHILE X > 0
    C = X MOD 10
    A = A + C
    IF C < B THEN B = C
    X = X \ 10
WEND
PRINT A
PRINT B
var x, a, b, c: integer;
begin
    readln(x);
    a := 0; b := 10;
    while x>0 do
        begin
            c := x mod 10;
            a := a+c;
            if c < b then b := c;
            x := x div 10;
        end;
    writeln(a); write(b);
end.
СиАл­го­рит­ми­че­ский
#include <stdio.h>
void main()
{
    int x, a, b, c;
    scanf("%d", &x);
    a = 0; b = 10;
    while (x>0) {
        c = x%10;
        a = a+c;
        if (c<b)
            b = c;
        x = x/10;
    }
    printf("%d\n%d", a, b);
}
алг
нач
цел x, a, b, c
ввод x
a := 0; b := 10
нц пока x>0
    c := mod(x,10)
    a := a+c
    если c<b
        то b := c
    все
    x := div(x,10)
кц
вывод a, нс, b
кон
21. При каком наи­мень­шем зна­че­нии вход­ной пе­ре­мен­ной k про­грам­ма выдаёт тот же ответ, что и при вход­ном зна­че­нии k = 64? Для Ва­ше­го удоб­ства про­грам­ма при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.






Бей­сикPython
DIM K, I AS LONG
INPUT K
I = 12
WHILE I > 0 AND F(I) >= K
    I = I - 1
WEND
PRINT I

FUNCTION F(N)
    F = N * N - 20
END FUNCTION
def f(n):
    return n * n - 20

k = int(input())
i = 12
while i > 0 and f(i) >= k:
    i = i - 1
print(i)
Ал­го­рит­ми­че­ский языкПас­каль

алг
нач
    цел i, k
    ввод k
    i := 12
    нц пока i > 0 и f(i) >= k
        i := i - 1
    кц
    вывод i
кон

алг цел f(цел n)
нач
    знач := n * n - 20
кон
var k, i : longint;
function f(n: longint) : longint;
begin
    f := n * n - 20
end;
begin
    readln(k);
    i := 12;
    while (i>0) and (f(i) >= k) do
        i := i-1;
    writeln(i)
end.
Си
#include <stdio.h>
long f(long n) { return n * n - 20; }
int main()
{
    long k, i;
    scanf("%ld", &k);
    i = 12;
    while (i > 0 && f(i) >= k) i––;
    printf("%ld", i);
    return 0;
}
22. У ис­пол­ни­те­ля Уве­ли­чи­тель две ко­ман­ды, ко­то­рым при­сво­е­ны но­ме­ра:


1. при­бавь 2,
2. умножь на 3.


Пер­вая из них уве­ли­чи­ва­ет число на экра­не на 2, вто­рая — умно­жа­ет его на 3.
Про­грам­ма для Уве­ли­чи­те­ля — это по­сле­до­ва­тель­ность ко­манд. Сколь­ко есть про­грамм, ко­то­рые число 1 пре­об­ра­зу­ют в число 59?
Ответ обос­нуй­те.

23. Сколь­ко су­ще­ству­ет раз­лич­ных на­бо­ров зна­че­ний ло­ги­че­ских пе­ре­мен­ных x1, x2, … x7, y1, y2, … y7, ко­то­рые удо­вле­тво­ря­ют всем пе­ре­чис­лен­ным ниже усло­ви­ям?

(x1 ∨ y1) ∧ ((x2 ∧ y2) → (x1 ∧ y1)) = 1
(x2 ∨ y2) ∧ ((x3 ∧ y3) → (x2 ∧ y2)) = 1

(x6 ∨ y6) ∧ ((x7 ∧ y7) → (x6 ∧ y6)) = 1
(x7 ∨ y7) = 1

В от­ве­те не нужно пе­ре­чис­лять все раз­лич­ные на­бо­ры зна­че­ний пе­ре­мен­ных x1, x2, ..., x7, y1, y2, ..., y7, при ко­то­рых вы­пол­не­на дан­ная си­сте­ма ра­венств. В ка­че­стве от­ве­та Вам нужно ука­зать ко­ли­че­ство таких на­бо­ров.
24. Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ет­ся ко­ор­ди­на­та точки на пря­мой (x — дей­стви­тель­ное число) и опре­де­ля­ет­ся при­над­леж­ность этой точки од­но­му из вы­де­лен­ных от­рез­ков В и D (вклю­чая гра­ни­цы). Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но.


Бей­сикПас­каль
INPUT x
IF x>=-3 THEN
IF x<=9 THEN
IF x>1 THEN
PRINT "не при­над­ле­жит"
ELSE
PRINT "при­над­ле­жит"
ENDIF
ENDIF
ENDIF
END

var x: real;
begin
readln(x);
if x>=-3 then
if x<=9 then
if x>1 then
write('не при­над­ле­жит')
else
write('при­над­ле­жит')
end.
СиАл­го­рит­ми­че­ский язык

void main(void)
{
float x;
scanf("%f",&x);
if(x>=-3)
if(x<=9)
if(x>1)
printf("не при­над­ле­жит");
else
printf("при­над­ле­жит");
}
алг
нач
вещ x
ввод x
если x>=-3 то
если x<=9 то
если x>1 то
вывод 'не при­над­ле­жит'
иначе
вывод 'при­над­ле­жит'
все
все
все
кон

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.
1. Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах, при­над­ле­жа­щих раз­лич­ным об­ла­стям (A, B, C, D и E). Гра­ни­цы (точки –3, 1, 5 и 9) при­над­ле­жат за­штри­хо­ван­ным об­ла­стям (B и D со­от­вет­ствен­но).
В столб­цах усло­вий ука­жи­те «Да», если усло­вие вы­пол­нит­ся; «Нет», если усло­вие не вы­пол­нит­ся; «—» (про­черк), если усло­вие не будет про­ве­рять­ся; «не изв.», если про­грам­ма ведет себя по-раз­но­му для раз­ных зна­че­ний, при­над­ле­жа­щих дан­ной об­ла­сти. В столб­це «Про­грам­ма вы­ве­дет» ука­жи­те, что про­грам­ма вы­ве­дет на экран. Если про­грам­ма ни­че­го не вы­во­дит, на­пи­ши­те «—» (про­черк). Если для раз­ных зна­че­ний, при­над­ле­жа­щих об­ла­сти, будут вы­ве­де­ны раз­ные тек­сты, на­пи­ши­те «не изв.». В по­след­нем столб­це ука­жи­те «Да» или «Нет».
2. Ука­жи­те, как нужно до­ра­бо­тать про­грам­му, чтобы не было слу­ча­ев её не­пра­виль­ной ра­бо­ты. (Это можно сде­лать не­сколь­ки­ми спо­со­ба­ми, до­ста­точ­но ука­зать любой спо­соб до­ра­бот­ки ис­ход­ной про­грам­мы.)

Об­ластьУсло­вие 1
(x >= –3)
Усло­вие 2
(x <= 9)
Усло­вие 3
(x > 1)
Про­грам­ма вы­ве­детОб­ласть об­ра­ба­ты­ва­ет­ся верно
A
B
C
D
E
25. Дан це­ло­чис­лен­ный мас­сив из 20 эле­мен­тов. Эле­мен­ты мас­си­ва могут при­ни­мать целые зна­че­ния от -1000 до 1000 вклю­чи­тель­но. Опи­ши­те на есте­ствен­ном языке или на одном из язы­ков про­грам­ми­ро­ва­ния ал­го­ритм, поз­во­ля­ю­щий найти и вы­ве­сти ми­ни­маль­ное зна­че­ние среди по­ло­жи­тель­ных эле­мен­тов мас­си­ва, крат­ных 4. Если в ис­ход­ном мас­си­ве нет эле­мен­та, зна­че­ние ко­то­ро­го по­ло­жи­тель­но и де­лит­ся на 4, то вы­ве­сти со­об­ще­ние «Не най­де­но».
Ис­ход­ные дан­ные объ­яв­ле­ны так, как по­ка­за­но ниже на при­ме­рах для не­ко­то­рых язы­ков про­грам­ми­ро­ва­ния и есте­ствен­но­го языка. За­пре­ща­ет­ся ис­поль­зо­вать пе­ре­мен­ные, не опи­сан­ные ниже, но раз­ре­ша­ет­ся не ис­поль­зо­вать не­ко­то­рые из опи­сан­ных пе­ре­мен­ных.









Бэй­сикПас­каль
N = 20
DIM A(N) AS INTEGER
DIM I, J, MIN AS INTEGER
FOR I = 1 TO N
    INPUT A(I)
NEXT I
...
END
const
    N = 20;
var
    a: array [1..N] of integer;
    i, j, min: integer;
begin
    for i := 1 to N do
        readln(a[i]);
    ...
end.
СиАл­го­рит­ми­че­ский язык

#include <stdio.h>
#define N 20
void main() {
    int a[N];
    int i, j, min;
    for (i = 0; i < N; i++)
        scanf("%d", &a[i]);
...
}
алг
нач
    цел N = 20
    цел­таб a[1:N]
    цел i, j, min
    нц для i от 1 до N
        ввод a[i]
    кц
    ...
кон
Есте­ствен­ный язык
Объ­яв­ля­ем мас­сив А из 20 эле­мен­тов.
Объ­яв­ля­ем це­ло­чис­лен­ные пе­ре­мен­ные I, J, MIN.
В цикле от 1 до 20 вво­дим эле­мен­ты мас­си­ва А с 1-го по 20-й.

В ка­че­стве от­ве­та Вам не­об­хо­ди­мо при­ве­сти фраг­мент про­грам­мы (или опи­са­ние ал­го­рит­ма на есте­ствен­ном языке), ко­то­рый дол­жен на­хо­дить­ся на месте мно­го­то­чия. Вы мо­же­те за­пи­сать ре­ше­ние также на дру­гом языке про­грам­ми­ро­ва­ния (ука­жи­те на­зва­ние и ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер, Free Pascal 2.4) или в виде блок-схемы. В этом слу­чае Вы долж­ны ис­поль­зо­вать те же самые ис­ход­ные дан­ные и пе­ре­мен­ные, какие были пред­ло­же­ны в усло­вии (на­при­мер, в об­раз­це, за­пи­сан­ном на есте­ствен­ном языке).
26. Два иг­ро­ка, Петя и Ваня, иг­ра­ют в сле­ду­ю­щую игру. Перед иг­ро­ка­ми лежит куча кам­ней. Иг­ро­ки ходят по оче­ре­ди, пер­вый ход де­ла­ет Петя. За один ход игрок может до­ба­вить в кучуодин или два ка­мня или уве­ли­чить ко­ли­че­ство кам­ней в куче в два раза. На­при­мер, имея кучу из 15 кам­ней, за один ход можно по­лу­чить кучу из 16, 17 или 30 кам­ней. У каж­до­го иг­ро­ка, чтобы де­лать ходы, есть не­огра­ни­чен­ное ко­ли­че­ство кам­ней.

Игра за­вер­ша­ет­ся в тот мо­мент, когда ко­ли­че­ство кам­ней в куче ста­но­вит­ся не менее 40. По­бе­ди­те­лем счи­та­ет­ся игрок, сде­лав­ший по­след­ний ход, то есть пер­вым по­лу­чив­ший кучу, в ко­то­рой будет 40 или боль­ше кам­ней. В на­чаль­ный мо­мент в куче было S кам­ней, 1 ≤ S ≤ 39.

Будем го­во­рить, что игрок имеет вы­иг­рыш­ную стра­те­гию, если он может вы­иг­рать при любых ходах про­тив­ни­ка. Опи­сать стра­те­гию иг­ро­ка — зна­чит опи­сать, какой ход он дол­жен сде­лать в любой си­ту­а­ции, ко­то­рая ему может встре­тить­ся при раз­лич­ной игре про­тив­ни­ка.

Вы­пол­ни­те сле­ду­ю­щие за­да­ния. Во всех слу­ча­ях обос­но­вы­вай­те свой ответ.

1. а) Ука­жи­те все такие зна­че­ния числа S, при ко­то­рых Петя может вы­иг­рать в один ход. Обос­нуй­те, что най­де­ны все нуж­ные зна­че­ния S, и ука­жи­те вы­иг­ры­ва­ю­щий ход для каж­до­го ука­зан­но­го зна­че­ния S.

б) Ука­жи­те такое зна­че­ние S, при ко­то­ром Петя не может вы­иг­рать за один ход, но при любом ходе Пети Ваня может вы­иг­рать своим пер­вым ходом. Опи­ши­те вы­иг­рыш­ную стра­те­гию Вани.

2. Ука­жи­те два таких зна­че­ния S, при ко­то­рых у Пети есть вы­иг­рыш­ная стра­те­гия, причём (а) Петя не может вы­иг­рать за один ход и (б) Петя может вы­иг­рать своим вто­рым ходом не­за­ви­си­мо от того, как будет хо­дить Ваня. Для каж­до­го ука­зан­но­го зна­че­ния S опи­ши­те вы­иг­рыш­ную стра­те­гию Пети.

3. Ука­жи­те зна­че­ние S, при ко­то­ром:

— у Вани есть вы­иг­рыш­ная стра­те­гия, поз­во­ля­ю­щая ему вы­иг­рать пер­вым или вто­рым ходом при любой игре Пети, и

— у Вани нет стра­те­гии, ко­то­рая поз­во­лит ему га­ран­ти­ро­ван­но вы­иг­рать пер­вым ходом.

Для ука­зан­но­го зна­че­ния S опи­ши­те вы­иг­рыш­ную стра­те­гию Вани. По­строй­те де­ре­во всех пар­тий, воз­мож­ных при этой вы­иг­рыш­ной стра­те­гии Вани (в виде ри­сун­ка или таб­ли­цы). На рёбрах де­ре­ва ука­зы­вай­те, кто де­ла­ет ход, в узлах — ко­ли­че­ство кам­ней в куче.
27. По­сле­до­ва­тель­ность на­ту­раль­ных чисел ха­рак­те­ри­зу­ет­ся чис­лом Y – наи­боль­шим чис­лом, крат­ным 26 и яв­ля­ю­щим­ся про­из­ве­де­ни­ем двух эле­мен­тов по­сле­до­ва­тель­но­сти с раз­лич­ны­ми но­ме­ра­ми.
На­пи­ши­те эф­фек­тив­ную, в том числе по ис­поль­зу­е­мой па­мя­ти, про­грам­му (ука­жи­те ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер, Borland Pascal 7.0), на­хо­дя­щую число Y для по­сле­до­ва­тель­но­сти на­ту­раль­ных чисел, зна­че­ние каж­до­го эле­мен­та ко­то­рой не пре­вос­хо­дит 1000. Про­грам­ма долж­на на­пе­ча­тать най­ден­ное число, если оно су­ще­ству­ет для за­дан­ной по­сле­до­ва­тель­но­сти, или ноль в про­тив­ном слу­чае.
Перед тек­стом про­грам­мы крат­ко опи­ши­те ис­поль­зу­е­мый Вами ал­го­ритм ре­ше­ния.
На вход про­грам­ме в пер­вой стро­ке подаётся ко­ли­че­ство чисел N. В каж­дой из по­сле­ду­ю­щих N строк за­пи­са­но одно на­ту­раль­ное число, не пре­вы­ша­ю­щее 1000.
При­мер вход­ных дан­ных:
5
40
100
130
28
51
При­мер вы­ход­ных дан­ных для при­ведённого выше при­ме­ра вход­ных дан­ных: 13000

Комментариев нет:

Отправить комментарий