Главная » 2017 » Сентябрь » 25 » Разбор задания по последовательностям
11:17
Разбор задания по последовательностям

 

По ка­на­лу связи передаётся по­сле­до­ва­тель­ность по­ло­жи­тель­ных целых чисел, все числа не пре­вы­ша­ют 1000. Ко­ли­че­ство чисел известно, но может быть очень велико. Затем передаётся кон­троль­ное зна­че­ние по­сле­до­ва­тель­но­сти — наи­боль­шее число R, удо­вле­тво­ря­ю­щее следующим

условиям:

1) R — про­из­ве­де­ние двух раз­лич­ных пе­ре­дан­ных эле­мен­тов по­сле­до­ва­тель­но­сти («различные» означает, что не рас­смат­ри­ва­ют­ся квад­ра­ты пе­ре­дан­ных чисел; до­пус­ка­ют­ся про­из­ве­де­ния раз­лич­ных эле­мен­тов последовательности, рав­ных по величине);

2) R де­лит­ся на 21.

Если та­ко­го числа R нет, то кон­троль­ное зна­че­ние по­ла­га­ет­ся рав­ным 0.

В ре­зуль­та­те помех при пе­ре­да­че как сами числа, так и кон­троль­ное зна­че­ние могут быть искажены.

Напишите эффективную, в том числе по ис­поль­зу­е­мой памяти, про­грам­му (укажите ис­поль­зу­е­мую вер­сию языка программирования, например, Borland Pascal 7.0), ко­то­рая будет про­ве­рять пра­виль­ность кон­троль­но­го значения. Про­грам­ма долж­на на­пе­ча­тать отчёт по сле­ду­ю­щей форме:

Вычисленное кон­троль­ное значение: …

Контроль пройден (илиКонтроль не пройден)

Перед тек­стом про­грам­мы крат­ко опи­ши­те ис­поль­зу­е­мый Вами ал­го­ритм решения.

На вход про­грам­ме в пер­вой стро­ке подаётся ко­ли­че­ство чисел N. В каж­дой из по­сле­ду­ю­щих N строк за­пи­са­но одно на­ту­раль­ное число, не пре­вы­ша­ю­щее 1000. В по­след­ней стро­ке за­пи­са­но кон­троль­ное значение.

Пример вход­ных данных:

6

70

21

997

7

9

300

21000

Пример вы­ход­ных дан­ных для приведённого выше при­ме­ра вход­ных данных:

Вычисленное кон­троль­ное значение: 21000

Контроль пройден

 

 

Решение

 

 

#include<iostream>

using namespace std;

void main() {

                setlocale(LC_ALL, "RUS");

                int n, r, m7 = 0, m3 = 0, m = 0, m21 = 0, x, k;

                cin >> n;

                for (int i = 0; i < n; i++) {

                                cin >> x;

                                if (x % 7 == 0 & x % 3 != 0 && x > m7)

                                               m7 = x;

                                if (x % 7 != 0 && x % 3 == 0 && x > m3)

                                               m3 = x;

                                if (x % 22 == 0 && x > m21) {

                                               if (m21 > m)

                                                               m = m21;

                                               m21 = x;

                                }

                                else if (x > m)

                                               m = x;

                }

                if (m*m21 > m7*m3)

                                k = m*m21;

                else

                                k = m7*m3;

                cin >> r;

                cout << "Вычисленное контрольное значение: " << k << endl;

                if (r == k)

                                cout << "Контроль пройден";

                else

                                cout << "Контроль не пройден";

}

Просмотров: 128 | Добавил: Надежда_Халтурина | Рейтинг: 0.0/0
Всего комментариев: 0
avatar