Задания
Версия для печати и копирования в MS Word
Тип 6 № 10955
i

Ниже при­ве­де­на про­грам­ма, за­пи­сан­ная на пяти язы­ках про­грам­ми­ро­ва­ния.

 

Бей­сикPython

DIM s, t AS INTEGER

INPUT s

INPUT t

IF s < 7 OR t > 5 THEN

    PRINT ‘YES’

ELSE

    PRINT ‘NO’

ENDIF

s = int(input())

t = int(input())

if s < 7 or t > 5:

    print("YES")

else:

    print("NO")

Пас­кальАл­го­рит­ми­че­ский язык

var s, t: integer;

begin

    readln(s);

    readln(t);

    if (s < 7) or (t > 5)

        then writeln('YES')

        else writeln('NO')

end.

алг

нач

цел s, t

ввод s

ввод t

если s < 7 или t > 5

    то вывод "YES"

    иначе вывод "NO"

все

кон

С++

#include <iostream>

using namespace std;

int main() {

    int s, t;

    cin >> s;

    cin >> t;

    if (s < 7 || t > 5)

        cout << "YES";

    else

        cout << "NO";

return 0;

}

 

Было про­ве­де­но 9 за­пус­ков про­грам­мы, при ко­то­рых в ка­че­стве зна­че­ний пе­ре­мен­ных s и t вво­ди­лись сле­ду­ю­щие пары чисел:

(9, 5); (11, 2); (4, 5); (7, –2); (4, 4); (7, 7); (1, –1); (3, 9); (2, 2).

Сколь­ко было за­пус­ков, при ко­то­рых про­грам­ма на­пе­ча­та­ла «NO»?

Спрятать решение

Ре­ше­ние.

За­ме­тим, что про­грам­ма на­пе­ча­та­ет «NO», если пе­ре­мен­ная s будет боль­ше или равна 7, а пе­ре­мен­ная t будет мень­ше или равна 5. Зна­чит, было 3 за­пус­ка, при ко­то­рых про­грам­ма на­пе­ча­та­ла «NO». В ка­че­стве зна­че­ний пе­ре­мен­ных s и t в этих слу­ча­ях вво­ди­лись сле­ду­ю­щие пары чисел:

(9, 5); (11, 2); (7, –2).

Ответ: 3.

 

При­ве­дем общий спо­соб ре­ше­ния по­доб­ных задач.

Вы­пи­шем все вво­ди­мые пары чисел, для каж­дой пары ука­жем, вы­пол­ня­ют­ся ли усло­вия s < 7 и t > 5. За­ме­тим, что про­грам­ма на­пе­ча­та­ет «YES», если вы­пол­не­но хотя бы одно из этих усло­вий (то есть хотя бы в одной ко­лон­ке есть слово «ДА»), а в про­тив­ном слу­чае на­пе­ча­та­ет «NO». Для каж­дой пары чисел за­пи­шем, что на­пе­ча­та­ет про­грам­ма:

вво­ди­мые зна­че­нияs < 7 t > 5 вывод
(9,5) НЕТ НЕТ NO
(11,2) НЕТ НЕТ NO
(4,5) ДА НЕТ YES
(7,-2) НЕТ НЕТ NO
(4,4) ДА НЕТ YES
(7,7) НЕТ ДА YES
(1,–1) ДА НЕТ YES
(3,9) ДА ДА YES
(2,2) ДА НЕТ YES

За­ме­тим, что толь­ко для трех пар про­грам­ма на­пе­ча­та­ет «NO».

 

При­ме­ча­ние.

За­ме­тим, что про­грам­ма на­пе­ча­та­ет «NO», если ука­зан­ное в про­грам­ме усло­вие не будет вы­пол­не­но. Сле­до­ва­тель­но, можно за­ме­нить ука­зан­ное в про­грам­ме усло­вие на про­ти­во­по­лож­ное и вы­брать те пары, для ко­то­рых оно вы­пол­ня­ет­ся. На­пом­ним, что за­ме­на усло­вия на про­ти­во­по­лож­ное осу­ществ­ля­ет­ся по сле­ду­ю­щим пра­ви­лам:

ис­ход­ное усло­виепро­ти­во­по­лож­ное усло­вие
x< N x ≥ N
x ≤ N x > N
x>N x ≤ N
x ≥ N x < N
A И В (НЕ А) ИЛИ (НЕ В)
А ИЛИ В (НЕ А) И (НЕ В)

Здесь x  — не­ко­то­рая пе­ре­мен­ная, N  — число, А и B  — усло­вия, ука­зан­ные в преды­ду­щих стро­ках таб­ли­цы. Так, при­ве­ден­ное в про­грам­ме вы­ра­же­ние (s < 7) ИЛИ (t > 5) долж­но быть за­ме­не­но на (НЕ (s < 7)) И (НЕ (t > 5)), то есть (s ≥ 7) И (t ≤ 5)

 

При­ве­дем дру­гое ре­ше­ние на языке Python.

def f(s, t):

if s < 7 or t > 5:

return 0

else:

return 1

a = ((9, 5), (11, 2), (4, 5), (7, -2), (4, 4), (7, 7), (1, -1), (3, 9), (2, 2))

kol = 0

for i in range(9):

kol += f(a[i][0], a[i][1])

print(kol)


Аналоги к заданию № 10951: 10953 10954 10955 Все

Раздел кодификатора ФИПИ: 1.3.1 Об­ра­бот­ка ин­фор­ма­ции. Ал­го­рит­мы и их свой­ства.