Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести произведение всех двузначных элементов массива с нечётной суммой цифр. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого является двузначным числом, и при этом сумма его цифр нечётна. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Исходные данные всегда подобраны так, что результат произведения не выходит за пределы объявленных типов данных.
Бейсик | Паскаль |
---|---|
N = 30 DIM A(N) AS LONG DIM I, J, P AS LONG FOR I = 1 TO N INPUT A(I) NEXT I ... END | const N = 30; var a: array [1..N] of longint; i, j, p: longint; begin for i := 1 to N do readln(a[i]); ... end. |
Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 30 int main() { long a[N]; long i, j, p; for (i = 0; i < N; i++) cin >> a[i]; ... }
| алг нач цел N = 30 целтаб a[1:N] цел i, j, p нц для i от 1 до N ввод a[i] кц ... кон |
Eстественный язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, J, P. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … | |
Python | |
# допускается также # использовать две # целочисленные переменные j, p a = [] n = 30 for i in range(0, n): a.append(int(input())) ... |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Содержание верного ответа (допускаются иные формулировки ответа, не искажающие его смысла).
Бейсик | Паскаль |
P = 1 FOR I = 1 TO N IF A(I) >= 10 AND A(I) <= 99 AND (A(I) MOD 10 + A(I) DIV 10) MOD 2 <> 0 THEN P = P * A(I) END IF NEXT I PRINT P
| p := 1; for i := 1 to N do if (a[i] >= 10) and (a[i] <= 99) and ((a[i] mod 10 + a[i] div 10) mod 2 <>0) then p := p * a[i]; writeln(p); |
Си | Алгоритмический язык |
p = 1; for (i = 0; i < N; i++) if (a[i]>=10 && a[i]<=99 && (a[i]%10+a[i]/10)%2 != 0) p*= a[i]; cout << p; | p := 1 нц для i от 1 до N если a[i]>=10 и a[i]<=99 и mod(mod(a[i],10)+div(a[i],10),2)<>0 то p := p * a[i] все кц вывод p |
Python | |
p = 1 for i in range(N): if a[i] >= 10 and a[i] <= 99: if (a[i] % 10 + a[i] // 10) % 2 !=0: p := p * a[i] print(p) | |
Eстественный язык | |
Записываем в переменную P начальное значение, равное 1. В цикле от первого элемента до тридцатого находим целую часть и остаток от деления элемента исходного массива на 10. Теперь находим остаток от деления суммы полученных двух значений на 2. Если результат не равен 0 и значение текущего элемента массива больше 9 и меньше 100, то считаем произведение данного элемента массива и значения переменной P. Результат умножения сохраняем в переменную P. Переходим к следующему элементу массива. После завершения цикла выводим значение переменной P. |