19.05.2024

Задание 6. ОГЭ по информатике. 9 класс. Решение с помощью программы

 Задание 6. ОГЭ по информатике. 9 класс.

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

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

Паскаль

алг
нач
цел s, t
ввод s
ввод t
ввод А
если mod(s, t) = A
    то вывод ′YES′
    иначе вывод ′NO′
все
кон

var s, t: integer;
begin
readln(s);
readln(t);
readln(A);
if (s mod t = Athen
    writeln(′YES′)
else
    writeln(′NO′)
end.

Бейсик

Python

DIM s, t AS INTEGER
INPUT s
INPUT t
INPUT A
IF s MOD t = A THEN
    PRINT ′YES′
ELSE
    PRINT ′NO′
ENDIF

s = int(input())
t = int(input())
A = int(input())
if (s % t == A):
    print(′YES′)
else:
    print(′NO′)

C++

#include <iostream>
using namespace std;
int main(){
    int s, t;
    cin >> s;
    cin >> t;
    
cin >> A;
    
if (s % t == A)
        
cout << ′YES′ << endl;
    
else
        
cout << ′NO′ << endl;
return 0;
}

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

(15, 4), (11, 5), (1, 10), (11, 3), (7, 4), (11, 5), (12, 7), (17, 10), (27, 10).

Укажите наибольшее значение параметра А, при котором программа вывела «YES» 2 раза.

Как будем решать задачу

  1. Сохраним пары чисел s и t в списках.
  2. Запустим внешний цикл по предполагаемому значению параметра A (промежуток можно выбрать экспериментально, но в данной задаче понятно, что параметр A  - это остаток от деления числа s на число t, и исходя из чисел s и t, параметр A может быть числом из промежутка [0, 9]).
  3. Во внешнем цикле по параметру A обнулим счетчик выводов YES (переменная p) и запустим внутренний цикл по 9 запускам (по сути по длине списка s (или t)).
    • Обратимся к запуску как s[i], t[i].
    • Если условие s[i] % t[i] == A выполняется, то увеличим счетчик выводов YES на 1, в противном случае не будем изменять значение счетчика p.
  4. Во внешнем цикле проверим условие p = 2, если оно выполняется, выведем число A.

Программа решения задачи на языке Python

y = [(15, 4), (11, 5), (1, 10), (11, 3), (7, 4), (11, 5), (12, 7), (17, 10), (27, 10)]

s, t = map(list,zip(*y))

#print(s,t)

#эту часть кода можно было бы записать вручную

# s = [15, 11, 1, 11, 7, 11, 12, 17, 27]

# t = [4, 5, 10, 3, 4, 5, 7, 10, 10]

for A in range(0,10):

    p = 0

    for i in range(9):

        if (s[i] % t[i] == A):

            p = p + 1

        else:

            p = p

    if p==2:

        print(A)

Результат запуска программы

3

7

Ответ: наибольшее число A = 7