Скоро Новый Год Ив Astana IT University студенты решили сыграть в Тайного Санту. Студент Арман подготовил по настоящему волшебный подарок. Это была шляпа, в которой хранились ручки
различных цветов в неограниченном количестве. Каждый студент мог не глядя вытащить одну ручку из
Шляпы и забрать ее себе. За этим процессом наблюдали преподаватели. Арман предложил им задачку:
не глядя Вытащить минимальное количество ручек, чтобы среди них обязательно были две одного
Цвета. Если преподаватели смогут правильно ответить на вопрос, они заберут этот подарок себе.
преподавателям решить задачку от Армана.
Input Format
Вводится одно целое положительное число А- количество цветов ручек.
Constraints
(1 <= A <= 1049)
Output Format
Выводится одно число - ответ на задачу.
Sample Input 0
4
Sample Output 0
5
// PascalABC.Net 3.0, сборка 1064
const
k = 100;
var
s, wd: string;
i, j, m, n, pt, step: integer;
Words, WordsSort: array[1..k] of string;
InOrder: boolean;
begin
Write('Введите строку: '); Readln(s);
n := Length(s); pt := 1; m := 0;
repeat
// Пропускаем все символы до первого непробельного
while pt <= n do
if Ord(s[pt]) <= 32 then Inc(pt) else break;
if pt <= n then begin
// Выделяем очередное слово
wd := '';
while pt <= n do
if Ord(s[pt]) > 32 then begin wd := wd + s[pt];Inc(pt) end
else break;
if wd <> '' then begin Inc(m);Words[m] := wd end
end
until pt > n;
// Теперь Words содержит все m слов.
// Отсортируем их в массиве WordsSort методом Шелла
for i := 1 to m do WordsSort[i] := Words[i];
step := m div 2;
while step > 0 do begin
for j := m - step downto 1 do begin
i := j;
while i <= m - step do begin
if WordsSort[i] > WordsSort[i + step] then begin
wd := WordsSort[i];
WordsSort[i] := WordsSort[i + 1];
WordsSort[i + 1] := wd
end;
i := i + step
end
end;
step := step div 2
end;
// Осталось поэлементно сравнить оба массива
InOrder := true; i := 1;
while InOrder and (i <= m) do
begin InOrder := (Words[i] = WordsSort[i]); Inc(i) end;
if m = 0 then Writeln('Строка не содержит слов')
else
if InOrder then Writeln('Cлова упорядочены')
else Writeln('Cлова не упорядочены')
end.
Тестовое решение:
Введите строку: слово1 слово2 слово3 слово4 слово5
Cлова упорядочены
Введите строку: слово1 слово2 слово4 слово3 слово5
Cлова не упорядочены
"Современный" вариант решения на Паскале:
// PascalABC.Net 3.0, сборка 1064
var
s:string;
begin
Write('Введите строку: '); Readln(s);
var Delim:=Range(0,32).Select(x->Chr(x)).ToArray;
var Words:=s.Split(Delim).Where(x->x<>'');
var WordsSort:=Words.Sorted;
if Words.SequenceEqual(WordsSort) then Writeln('Cлова упорядочены')
else Writeln('Cлова не упорядочены')
end.
Тестовое решение совпадает с вышеприведенным.
<p>program xxx;</p><p> var i, k, d, e, s : integer;</p><p>begin</p><p> k:=0;</p><p> for i:= 10 to 99 do</p><p> begin</p><p> d:= i div 10;</p><p> e:= i mod 10;</p><p> s:=d + e;</p><p> if i mod s = 0 then k:=k+1</p><p> end;</p><p> write ('кол-во чисел которые делятся на сумму своих цифр=', k);</p><p> readln</p><p>end.</p>