М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
dashayudina04
dashayudina04
28.08.2020 01:28 •  Информатика

Вам дан массив a длины n. вы можете удалить некоторые элементы из него, при этом после всех удалений элементы должны стоять в строго возрастающем порядке. выведите максимальную возможную длину массива после всех удалений.

👇
Ответ:
{Автор:       Рудницкий В. Л.
Ограничения: Последовательность не может быть длинее NN.
Откуда:      Олимпиада, KZ, 2016.}
const  NN = 10000;
var  a  : array [1 .. NN] of integer;  i, j, d, N: integer;
begin
  write('Введите длину массива: '); readln(N);
  writeln('Введите массив чисел через пробел:');
  for i := 1 to N do    read( a[i] );
  { Удаляем повторы чисел }
  for i := 1 to N-1 do
    for j := i+1 to N do
      if a[i] = a[j] then a[j] := 0;
  { Создаем последовательность заполняя не нужные числа нулями }
  for i := 2 to N do    if ( a[i-1] > a[i] ) and ( a[i] <> 0 ) then a[i] := 0;
  { Суммируем не нулевые элементы }
  d := 0;  for i := 1 to N do    if a[i] <> 0 then d := d + 1;
  writeln('Максимальная длинна массива после удалений: ',d);
end.
4,4(17 оценок)
Открыть все ответы
Ответ:
taniamishanina
taniamishanina
28.08.2020
// PascalABC.NET 3.2, сборка 1467 от 02.06.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadlnString('>');
  var k:=s.Length mod 4;
  if k>0 then s:=(4-k)*'0'+s;
  var a:=s.Batch(4).Select(c->c.JoinIntoString(''));
  foreach var t in a do
    case t of
    '0000':Write('0');
    '0001':Write('1');
    '0010':Write('2');
    '0011':Write('3');
    '0100':Write('4');
    '0101':Write('5');
    '0110':Write('6');
    '0111':Write('7');
    '1000':Write('8');
    '1001':Write('9');
    '1010':Write('A');
    '1011':Write('B');
    '1100':Write('C');
    '1101':Write('D');
    '1110':Write('E');
    '1111':Write('F');
    end;
  Writeln  
end.

Пример
> 110101111010101100010101110101101011011011
35EAC575ADB
4,4(86 оценок)
Ответ:
tatyankafi
tatyankafi
28.08.2020
#include <stdio.h>
#include <math.h>
struct prm {
    float a, b, c;
};
 
struct tch {
    float x, y;
};
 
void Peres2(struct prm a, struct prm b, struct tch *t) {
    t->x = (b.c*a.b-a.c*b.b)/(a.a*b.b-a.b*b.a);
    t->y = (b.a*a.c-a.a*b.c)/(a.a*b.b-a.b*b.a);
}
 
int Prov(struct prm a, struct prm b) {
    return a.a*b.b-a.b*b.a!=0;
}
 
void Vvod(struct prm *a, int k) {
    do {
        printf("Введите коэффициенты прямой %i\n", k);
        scanf("%f%f%f", &a->a, &a->b, &a->c);
        if ((a->a == 0) && (a->b == 0))
            printf("Это не прямая, повторите ввод\n");
    } while ((a->a == 0) && (a->b == 0));
    a->c = -a->c;
}
 
struct prm a, b, c;
struct tch m12, m13, m23;
float s;
 
int main() {
    Vvod(&a, 1);
    Vvod(&b, 2);
    Vvod(&c, 3);
    if (!Prov(a, b) || !Prov(a, c) || !Prov(b, c)) {
        printf("Прямые попарно не пересекаются");
        return 0;
    }
    Peres2(a,b,&m12);
    Peres2(a,c,&m13);
    Peres2(b,c,&m23);
 
    printf("Точка пересечения 1-2: %5.2f; %5.2f\n", m12.x, m12.y);
    printf("Точка пересечения 1-3: %5.2f; %5.2f\n", m13.x, m13.y);
    printf("Точка пересечения 2-3: %5.2f; %5.2f\n", m23.x, m23.y);
 
    s = fabs(m12.x*(m23.y-m13.y)+m23.x*(m13.y-m12.y)+m13.x*(m13.y-m23.y))/2;
    printf("Площадь треугольника пересечений=%.2f", s);
    return 0;
}
4,5(56 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ