jenek-f
?>

Напишите программу: 1. Ввести число. Если оно больше 10, разделить его на 2, если меньше или равно 10, то умножить на 5. 2. Ввести два числа. Если их сумма больше 100, то сумму уменьшить в 2 раза, в противном случае увеличить в 2 раза

Информатика

Ответы

Salko17

1)

a = int(input())

if a > 10:        

a = a / 2  

elif a <= 10:    

a = a * 5    

print(a)        

2)

a = int(input())

b = int(input())

c = a + b

if c > 100:

c = c / 2 else:

c = c * 2

print(c)

Объяснение:

domtorgvl20082841
Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). Если в 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}

Это и есть ответ.
siger06297
Var
a:array[1..100,1..100] of integer;
c:array[1..20,1..20] of real;
b:array[1..20,1..20] of real;
i,j,n,k:integer;
t:real;
r:integer;
begin
randomize;
t:=0;
Writeln('Введите порядок матрицы: ');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
a[i, j] := random(10); 
end;
for i:=1 to n do
for j:=1 to n do
begin
b[i,j]:=1/i+j-1;
end;
for i:=1 to n do
for j:=1 to n do
begin
for k:=1 to n do
begin
t :=t+a[i,k]*b[k, j];
end;
c[i,j]:=t;
t:=0;
end;
for i:=1 to n do
begin
for j:=1 to n do
begin
write(' ',c[i,j]:2:2);
end;
Writeln;
end;

end.

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

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

Напишите программу: 1. Ввести число. Если оно больше 10, разделить его на 2, если меньше или равно 10, то умножить на 5. 2. Ввести два числа. Если их сумма больше 100, то сумму уменьшить в 2 раза, в противном случае увеличить в 2 раза
Ваше имя (никнейм)*
Email*
Комментарий*

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

semenoffufc8
nv6634
Татьяна
opscosmiclatte7868
Gpack54
pak1998378
Пимкина Сергеевич
marinakovyakhova
Акимцева27
benonika
aedunova3
озерская_Мария1234
zodgener
kryshtall2276
pavelvsk2023