ПАСКАЛЬ ИНФОРМАТИКА Составьте блок-схему алгоритма для решения следующей задачи. ( Pascal) Катет прямоугольного треугольника равен 5 см, а разность между гипотенузой и вторым катетом – 1 см. Вычислите площадь треугольника.
// PascalABC.NET 3.0, сборка 1128 begin var a:=ArrRandom(20,-10,19); a.Println(','); // 1 var b:=ReadArrInteger('Введите 10 целых чисел',10); // 2 Writeln('Количество положительных элементов ', a.Where(x->x>0).Count); // 3 for var i:=0 to 19 do if a[i]<0 then a[i]:=0; Writeln('Массив А после замены отрицательных'); a.Println(','); //4 Writeln('Сумма положительных элементов ', a.Where(x->x>0).Sum) // 5 end.
Тестовое решение: 14,8,9,-5,6,3,3,-10,-8,18,7,13,2,17,-1,0,4,-3,8,-8 Введите 10 целых чисел -5 0 13 -7 -14 11 8 19 -3 -1 Количество положительных элементов 13 Массив А после замены отрицательных 14,8,9,0,6,3,3,0,0,18,7,13,2,17,0,0,4,0,8,0 Сумма положительных элементов 112
#include <iostream>
typedef long long ll;
using namespace std;
bool ll_is_valid(ll t, ll N, ll x, ll y)
{
return t / x + (t - x) / y >= N;
}
ll f(ll N, ll x, ll y)
{
ll R = 1;
while (!ll_is_valid(R,N,x,y)) R *= 2;
ll L = R / 2;
while(R - L > 1)
{
ll M = (L + R) / 2;
if (!ll_is_valid(M,N,x,y)) {L = M;}
else {R = M;}
}
return R;
}
int main()
{
ll N,x,y;
cin >> N >> x >> y;
if(x > y) swap( x, y );
cout << f(N, x, y) << std::endl;
}
begin
var a:=ArrRandom(20,-10,19);
a.Println(','); // 1
var b:=ReadArrInteger('Введите 10 целых чисел',10); // 2
Writeln('Количество положительных элементов ',
a.Where(x->x>0).Count); // 3
for var i:=0 to 19 do
if a[i]<0 then a[i]:=0;
Writeln('Массив А после замены отрицательных'); a.Println(','); //4
Writeln('Сумма положительных элементов ',
a.Where(x->x>0).Sum) // 5
end.
Тестовое решение:
14,8,9,-5,6,3,3,-10,-8,18,7,13,2,17,-1,0,4,-3,8,-8
Введите 10 целых чисел -5 0 13 -7 -14 11 8 19 -3 -1
Количество положительных элементов 13
Массив А после замены отрицательных
14,8,9,0,6,3,3,0,0,18,7,13,2,17,0,0,4,0,8,0
Сумма положительных элементов 112