a406

Задача. С помощью [latex]x_{ij}, i=1,2; j=1,…,n[/latex] — действительной матрицы на плоскости задано [latex]n[/latex] точек так, что [latex]x_{1j},x_{2j} [/latex] — координаты [latex]j [/latex]— точки. Точки попарно соединены отрезками. Найти длину наибольшего отрезка.

Тест

n Матрица [latex]x_{ij}, i=1,2[/latex] Длина наибольшего отрезка  Комментарий
3 2 8 4

9 1 5

10 Пройдено
4 6 14 2 1

9 3 8 0

13.3417 Пройдено
5 1 8 4 3 7

2 9 5 0 11

11.7047 Пройдено

 

Код программы

Ход решения:

  1. Вводим матрицу построчно (не очень удобно).
  2. Находим длину наибольшего отрезка.
    С помощью вложенных циклов мы находим длины всех отрезков по формуле
    AB=(x2−x1)2+(y2−y1)2,A(x1,y1),B(x2,y2).
  3. По алгоритму нахождения максимума находим длину наибольшего отрезка.
  4. Выводим матрицу.
  5. Выводим длину наибольшего отрезка.

Пример выполнения

Ю 4.31

Задача

Циклический сдвиг. Осуществить циклический сдвиг элементов массива [latex]T(n)[/latex] на [latex]m[/latex] позиций влево, то есть получить массив: [latex]t_{m+1},…,t_{n},t_{1},…,t_{m}[/latex].
При этом необязательно [latex]m<n[/latex].

Тесты:

изначальный массив сдвиг (m) результат комментарий
1 2 3 4 5 6 7 2 3 4 5 6 7 1 2 пройден
1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 пройден
1 2 3 4 5 6 7 10 4 5 6 7 1 2 3 пройден

 

Код программы

Пример выполнения

A299

Условие

Дана последовательность действительных чисел [latex]a_{1},a_{2},…,a_{n}[/latex]. Требуется домножить все члены последовательности на квадрат её наименьшего члена, если [latex]<a_{1} \geq 0[/latex], в противном случае — на квадрат наибольшего.

Решение

Для решения воспользуемся классом Array для инициализации массива. Далее заполним его числами со входного потока. Далее, в зависимости от первого (нулевого) элемента массива, воспользуемся функцией getMin() или getMax() . Далее умножим каждый элемент на (соответственно) минимум/максимум и выведем последовательность.

Тесты

Входные данные Выходные данные
1 -2 2 43 5 -10 12 0 -1 -3698 3698 79507 9245 -18490 22188 0 -1849
2 0 100 99 0 -1 1 0 100 99 0 -1 1
3 42 1 1 1 0 -1 24 -24 -42 74088 1764 1764 1764 0 -1764 42336 -42336 -74088

Код

Ссылка на решение

e-olymp 141. Минимальная сумма цифр

Задача. Сколько натуральных чисел из промежутка [M,N] имеют наименьшую сумму цифр ?

Задачу также можно найти здесь.

Входные данные:
Во входном файле два числа [latex]\textrm{M}[/latex] и [latex]\textrm{N}[/latex] ([latex]1\leq \textrm{M}\leq \textrm{N}\leq 1000000[/latex]) .

Выходные данные:

В выходной файл нужно записать ответ — одно число.

Тесты

M N Вывод
1 1 100 3
2 2 17 1
3 32 1024 2
4 1 1000000 7
5 10 10 1

Код программы

Алгоритм решения

Для решения данной задачи зададим функцию, которая возвращает сумму чисел вводимого нами числа. После ввода границ необходимого промежутка присваиваем минимальную сумму[latex]\textrm{M}[/latex]. Теперь задаём цикл со счётчиком i от [latex]\textrm{M + 1}[/latex] до [latex]\leq \textrm{N}[/latex]. В случае, когда сумма чисел счётчика меньше сумме цифр числа [latex]\textrm{M}[/latex], присваиваем ей (сумме цифр счётчика i) минимальную сумму цифр и выводим единицу. В противном случае увеличиваем счётчик на единицу и выводим полученный результат. Выводимое число и будет количеством натуральных чисел на промежутке, имеющих наименьшую сумму цифр.

Код программы можно найти здесь.

6.7. Итераторы

С Haxe очень легко определить пользовательские итераторы и итерируемые типы данных. Эти понятия представлены типами  Iterator и   Iterable &lt;T&gt; соответственно:

Любой класс, который структурно согласуется с одним из этих типов, может быть проитерирован с помощью цикла for-loop. То есть, если класс определяет методы   hasNext и   next с соответствующими возвращаемыми типами, он считается итератором, а если он определяет итератор метода, возвращающий   Iterator &lt;T&gt;, он считается итерируемым типом.

Выполнение кода можно посмотреть здесь

Тип   BoundsArrayIterator&lt;T&gt; в данном примере является итератором. Он реализует методы hasNext, проверяющий достигнут ли конец диапазона, и   next, возвращающий объект из массива. Данный итератор используется в классе   BoundsArrayWrap&lt;T&gt; в методе   iterator, который и определяет данный класс как итерируемый.

 

Ссылка на источник