919. Номер на 3

 

Задан одномерный массив вещественных чисел. Определить сумму и количество положительных элементов, индексы которых делятся на 3 без остатка.

 

Вход. В первой строке задано количество элементов n (n ≤ 100) в массиве. В следующей строке находится n вещественных чисел, значение каждого из которых по модулю не превышает 100.

 

Выход. В единственной строке вывести сначала количество искомых элементов массива и их сумму, вычисленную с точностью до двух знаков после десятичной точки.

 

Пример входа

Пример выхода

6

6 7.5 2.1 2.0 0 -3

1 2.10

 

 

РЕШЕНИЕ

обработка массивов

 

Анализ алгоритма

При помощи одного линейного цикла находим сумму и количество положительных элементов массива, индексы которых делятся на 3 без остатка.

 

Реализация алгоритма

Читаем длину массива n. В переменной c подсчитываем количество положительных чисел, индексы которых делятся на 3 без остатка. В переменной s подсчитываем их сумму. Инициализируем эти переменные нулями.

 

scanf("%d",&n);

s = c = 0;

 

Читаем n чисел. Вычисляем сумму и количество положительных элементов, индексы которых делятся на 3 без остатка. Индексом является переменная цикла i.

 

for (i = 1; i <= n; i++)

{

  scanf("%lf",&a);

  if ((i % 3 == 0) && (a > 0))

  {

    c++;

    s += a;

  }

}

 

Выводим ответ.

 

printf("%d %.2lf\n",c,s);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int c, n = con.nextInt();

    double s, a;

    s = c = 0;

    for (int i = 1; i <= n; i++)

    {

      a = con.nextDouble();

      if ((i % 3 == 0) && (a > 0))

      {

        c++;

        s += a;

      }

    }

    System.out.printf("%d %.2f\n",c,s);

    con.close();

  }

}

 

Python реализация

 

n = int(input())

m = list(map(float,input().split()))

s = c = 0

 

Цикл идет со второго элемента до n-го сшагом 3.

 

for i in range(2,n,3):

  if m[i] > 0 :

    c += 1

    s += m[i]

print (c,"%.2f"%s)

 

Python реализация с вырезкой массива

 

n = int(input())

m = list(map(float,input().split()))

s = c = 0

 

Выбираем элементы, начиная со второго и с шагом 3.

 

m = m[2::3]

for v in m:

  if v > 0 :

    c += 1

    s += v

print (c,"%.2f"%s)