Как я понимаю, это PascalABC.NET
Функция ArrRandom(n, a, b) возвращает массив целых чисел из n элементов, сгеренированный случайным образом в диапазоне от a до b включительно
.println() - вывод значения в консоль
z[4::5] - вернёт срез массива z, начиная с 4го индекса с шагом 5.
Метод Aggregate применяет агрегатную функцию к последовательности.
Агрегатная функция - функция, выполняющая вычисление на наборе значений, и возвращающая какое либо одно значение.
В Вашем случае - для массива z вызывается метод Aggregate, в котором исходным значением вычислений является BigInteger.One (целое число 1, имеющее тип BigInteger - бесконечно больше целое), в это же время являющееся промежуточным значением, которое каждый раз умножается на значение следующего элемента последовательности.
Грубо говоря, Z[4::5].Aggreage(BigInteger.One, (p, x) -> p*x) Вернёт произведение каждого пятого элемента массива Z, начиная с 4го индекса.
вроде должно работать
Объяснение:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
long long k, n;
cin >> n >> k;
vector<int> v;
for (int i = 0; i < n; i++) {
int a;
cin >> a;
v.push_back(a);
}
int l = 1, r = 200, m;
while (l < r - 1) {
long long sum = 0;
m = (r + l) / 2;
for (int i = 0; i < n; i++) {
sum += v[i] / m;
}
if (sum < k) {
r = m;
}
else {
l = m;
}
}
int sumL = 0, sumR = 0;
for (int i = 0; i < n; i++) {
sumL += v[i] / l;
sumR += v[i] / r;
}
if (sumR == k) {
cout << r;
return 0;
}
else if (sumL==k){
cout << l;
return 0;
}
cout << 0;
return 0;
}