Другие языки программирования и технологии

Напишите программу на любом из языков программирования

В этой задаче не будет длинного запутанного условия, лишь четкая постановка задачи.

В заданном массиве найти сумму всех положительных элементов S. Найти позиции максимального и минимального элементов, а затем посчитать произведение P всех чисел, лежащих между ними (не включая минимум и максимум). Гарантируется, что в массиве ровно один минимальный и ровно один максимальный элемент. Поскольку числа в ответе могут получиться очень большими - найдите их остаток от деления на 228228227. Не забудьте, что остаток от деления - величина неотрицательная.

Формат ввода
В первой строке задано единственное число N – количество элементов массива (2 ≤ N ≤ 105). Вторая строка содержит N целых чисел - элементы заданного массива (-105 ≤ ai ≤ 105).

Формат вывода
Необходимо вывести два неотрицательных числа: сумму S и произведение P. Поскольку числа в ответе могут получиться очень большими - найдите их остаток от деления на 228228227. Не забудьте, что остаток от деления - величина неотрицательная.
"Остаток от деления - величина не отрицательная" - в ПРОГРАММИРОВАНИИ это откровенная ГЛУПОСТЬ.

Остаток от деления ВСЕГДА равен:
остаток = делимое - делитель * частное
В зависимости от правил округления частного при целочисленном делении знак остатка равен либо знаку делимого (округление к нулю), либо знаку делителя (округление к минус бесконечности).
https://ru.wikipedia.org/wiki/Деление_с_остатком#Знак_остатка

А т. к. в разных языках программирования используются РАЗНЫЕ правила округления, то задача - в зависимости от используемого языка - может иметь как минимум ДВА разных решения.
@лекс@ндр Гусаченко
93 945
Лучший ответ
Стасик Золотов Мне просто нужно решение
Да мне-то не жалко, только преподу твоему не понравится :)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;

namespace ConsoleApp25
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
List< int > a = new List< int >();
for (int i = 0; i < n; i++)
a.Add(int.Parse(Console.ReadLine()));
int s = (from x in a where x > 0 select x).Sum();
int MinPos = a.IndexOf(a.Min());
int MaxPos = a.IndexOf(a.Max());
BigInteger p = 1;
for (int i = Math.Min(MinPos, MaxPos); i <= Math.Max(MinPos, MaxPos); i++)
p *= a[i];
Console.WriteLine("Sum of positive: {0}", s);
Console.WriteLine("Index of minimal: {0}", MinPos);
Console.WriteLine("Index of maximal: {0}", MaxPos);
Console.WriteLine("Product modulo 228228227: {0}", p%228228227);
Console.ReadKey();
}
}
}
вот написал я.
дальше что?
Вопрос понятен, задача простая. Сколько платишь?
Роман Дзядзин
Роман Дзядзин
2 354
Стасик Золотов Напишешь или нет?
Роман Дзядзин Вот решение без остатка от деления, который тут не нужен.
https://ideone.com/2bjkDz
import java.util.*;
import java.io.*;

public class Main {
public static void main(final String... args) {
App app = new App(System.in, System.out);
app.exec();
}
}

class App {
private final long mod = 228228227;
private final InputStream input;
private final OutputStream output;

public App(final InputStream input, final OutputStream output) {
this.input = input;
this.output = output;
}

public void exec() {
try (final PrintStream out = new PrintStream(output)) {
final Scanner scanner = new Scanner(input);
int count = scanner.nextInt();
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < count; i++) {
numbers.add(scanner.nextInt());
}
long sum = 0, product = 1;
for (Integer number : numbers) {
sum += number;
product *= number;
}
out.print("S = " + sum % mod + ", ");
out.print("P = " + product % mod);
scanner.close();

} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Kenly Stenkor
Kenly Stenkor
1 530
Фанис Зайнетдинов Введи 2 числа - 2000000000 и 2000000001
Знаю, что большие, но не 100 же чисел вводить.
Проверь теперь свое Р: https://www.wolframalpha.com/input/?i=2000000000+*+2000000001+mod+228228227
Чтоооооо? ты хоть сам понял чё написал?
DT
Damir Telemgenov
833