Pascal: var a: integer; begin write('введите число: '); readln(a); repeat a: =a div 2; writeln(a); until a=0; end.
Olga-Borisovna
19.12.2021
Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). если в i-ой компоненте связности вершин, то общее число рёбер будет суммой по всем компонентам связности: требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна n и ni - натуральные числа. если k = 1, то всё очевидно - ответ n(n - 1)/2. пусть k > 1. предположим, n1 < = n2 < = < = nk - набор чисел, для которых достигается максимум, и n1 > 1. уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в k-ую компоненту связности. вычислим, как изменится сумма квадратов: поскольку по предположению n1 > 1 (тогда и nk > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. выкинем эту компоненту связности, останутся k - 1 компонента связности и n - 1 вершина. будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине. итак, должно выполняться подставив в исходную формулу, получаем это и есть ответ.
ayanrsadykov
19.12.2021
// pascalabc.net 3.0, сборка 1128 begin var m: =readinteger('число строк: '); var n: =readinteger('число колонок'); var a: =matrixrandom(m,n,-10,20); writeln('сгенерированный массив'); for var i: =0 to m-1 do begin for var j: =0 to n-1 do write(a[i,j]: 4); writeln end; writeln('найденные суммы'); for var i: =0 to m-1 do begin var avg: =0.0; for var j: =0 to n-1 do avg+=a[i,j]; avg/=n; var s: =0; for var j: =0 to n-1 do if a[i,j]> avg then s+=a[i,j]; write(s,' ') end; writeln end. тестовое решение: число строк: 5 число колонок 7 сгенерированный массив 19 14 -6 -8 2 -3 11 2 -8 -9 18 6 -6 -9 -5 -1 2 -6 -6 15 -4 13 19 2 6 -10 5 15 13 1 0 -2 -8 20 18 найденные суммы 44 26 17 47 51
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Написать программу. чтоб вводимое число делилось на 2 пока она не станет 0. и пусть ввыведит все деление)