Melsan19914239
?>

Сделать программу на паскале 17. заполнить линейный массив по формуле : n[ i]=12x-i/7x+1.

Информатика

Ответы

kapitan19
//PascalABC.NET
//Версия 3.3, сборка 1611 
begin
var a:= new real[15];
write('x=');
var x:=ReadReal();
a.Fill(i->12*x-i/7*x+1);
a.Println();
end.
ipKAV85
//PascalABC.NET 3.3,сборка 1611 от 06.01.2018

//Внимание! Если программа не работает, обновите версию!

begin

  var mas:= new real[20]; var x:=readinteger('x=');

  for var i:=1 to 20-1 do

  mas[i]:=12*x-i/7*x+1;

  mas.Select(t->round(t*100)/100).Println;;
end.
vodoleytatyana
Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). Если в i-ой компоненте связности n_i вершин, то общее число рёбер будет суммой по всем компонентам связности:

\displaystyle \sum_{i=1}^K\frac{n_i(n_i-1)}2=\frac12\sum_{i=1}^K n_i^2-\frac12\sum_{i=1}^Kn_i=\frac12\sum_{i=1}^K n_i^2-\frac N2

Требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна N и ni - натуральные числа.

Если K = 1, то всё очевидно - ответ N(N - 1)/2. Пусть K > 1.

Предположим, n1 <= n2 <= ... <= nK - набор чисел, для которых достигается максимум, и n1 > 1. Уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в K-ую компоненту связности. Вычислим, как изменится сумма квадратов:
\Delta(\sum n_i^2)=(1^2+(n_K+n_1-1)^2)-(n_1^2+n_K^2)=2(n_1-1)(n_K-1)
Поскольку по предположению n1 > 1 (тогда и nK > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. Значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. Выкинем эту компоненту связности, останутся K - 1 компонента связности и N - 1 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.

Итак, должно выполняться
n_1=n_2=\cdots=n_{K-1}=1;\qquad n_K=N-K+1

Подставив в исходную формулу, получаем
\displaystyle\frac{(N-K)(N-K+1)}{2}

Это и есть ответ.
dentalfamily
// PascalABC.NET 3.0, сборка 1128
procedure Convert(V:array of integer);
begin
  for var i:=0 to V.Length-1 do
    if V[i]>9 then V[i]:=9
    else
      if V[i]<5 then V[i]:=5
end;

procedure Develop(c:char; k:integer);
begin
  WritelnFormat('*** Массив {0} ***',c);
  var a:=ArrRandom(k,-5,15);
  Write('исходный : '); a.PrintLn(',');
  Convert(a);
  Write('результат: '); a.PrintLn(',');
end;

begin
  var m:=ReadInteger('Количество элементов в массиве A:');
  var n:=ReadInteger('Количество элементов в массиве B:');
  Develop('A',m);
  Develop('B',n)
end.

Тестовое решение:
Количество элементов в массиве A: 15
Количество элементов в массиве B: 10
*** Массив A ***
исходный : 6,5,-5,9,1,0,-3,9,13,12,-4,8,11,14,-5
результат: 6,5,5,9,5,5,5,9,9,9,5,8,9,9,5
*** Массив B ***
исходный : 5,12,12,4,7,9,7,-3,-1,-2
результат: 5,9,9,5,7,9,7,5,5,5

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Сделать программу на паскале 17. заполнить линейный массив по формуле : n[ i]=12x-i/7x+1.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

mishink535
Bulanova
Стуканова УЧРЕЖДЕНИЕ1877
ПетросовичЗаславский
Перевести из 2 с.с. в 8 с.с. 1)110010010100 2)110100100111010
maxim-xx38
pnatalia
Самохвалова-Геннадьевна
byfetvostochniy
Денис1619
zatoichi69
Reginahappy
iuv61
Ulianev77
qwerty
ИльяАндреевич-Мария