Program D1KPxx8; uses crt; var s,b:string; c:boolean; i,k,n:integer; begin c:=false; s:=''; read(b); k:=0; repeat inc(k); begin if s[k]=b[1] then begin break; end; end; until k>length(s); n:=length(b); for i:=1 to n do begin if s[k]=b[i] then begin c:=true; end else c:=false; inc(k); end; write(c); if c=true then halt else if c=false then halt; writeln('false'); end.
// Напишите программу, которая в последовательности натуральных чисел определяет количество //чисел, кратных 3. Программа получает на вход количество чисел в //последовательности, а затем сами числа. В последовательности всегда имеется число, //кратное 3. Количество чисел не превышает 100. Введённые числа не превышают 300. //Программа должна вывести одно число - количество чисел, кратных 3.
Var i,j,x :word; n :integer; begin writeln('Введите количество цифр в последовательности'); Readln (j); if j>100 then //Проверка накличество чисел в последовательности begin writeln ('По условия задачи цифр не должно быть более 100'); writeln ('Введите количесво цифр еще раз'); readln (j); end; for i:=1 to j do begin Writeln ('Введите ',i,' число'); readln (n); if n>300 then //проверка максимального значения числа begin writeln ('Данное число не удовлетворяет условиям задачи (>300'); writeln ('Введите его еще раз'); readln (n); end; n:= n mod 3; if n=0 then x:=x+1; end; Writeln ('Количество чисел, кратных 3:'); Writeln (x); end.
Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). Если в 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 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.
uses crt;
var
s,b:string;
c:boolean;
i,k,n:integer;
begin
c:=false;
s:='';
read(b);
k:=0;
repeat
inc(k);
begin
if s[k]=b[1] then
begin
break;
end;
end;
until k>length(s);
n:=length(b);
for i:=1 to n do
begin
if s[k]=b[i] then
begin
c:=true;
end
else c:=false;
inc(k);
end;
write(c);
if c=true then
halt
else
if c=false then
halt;
writeln('false');
end.