1990200827
31.03.2022 13:37

Нужно написать код на python.
сколь­ко вре­ме­ни потре­бу­ет­ся про­грам­ми­сту, что­бы запи­лить весь проект?

в рабо­те у про­грам­ми­ста есть про­ект, в кото­ром нуж­но пофик­сить три бага и доба­вить три фичи. за час про­грам­мист может пофик­сить 1–2 бага или доба­вить 1–2 фичи. но он посто­ян­но отвле­ка­ет­ся на фору­мы и соц­се­ти, поэто­му каж­дый час рабо­та идёт так:

если он пофик­сит один баг, то выле­зут два новых.
если он пофик­сит за час сра­зу два бага, то в тре­ке­ре появит­ся зада­ние сде­лать ещё одну новую фичу, и не факт, что она вой­дёт в финаль­ный релиз.
если он доба­вит одну фичу, то в тре­ке­ре появит­ся запись, что ему обя­за­тель­но нуж­но доба­вить ещё одну фичу, но попро­ще, и без это­го про­ект не сдать.
и толь­ко если он за час доба­вит сра­зу две фичи, то новых не при­ба­вит­ся.
сколь­ко мини­маль­но вре­ме­ни потре­бу­ет­ся про­грам­ми­сту, что­бы сдать про­ект без багов и с пустым тре­ке­ром ?

решение
един­ствен­ное дей­ствие, при кото­ром не появ­ля­ет­ся новых багов и фич — это когда про­грам­мист за час добав­ля­ет сра­зу две фичи. полу­ча­ет­ся, что для успеш­но­го завер­ше­ния нуж­но сде­лать чёт­ное коли­че­ство фич под­ряд — 2, 4, 6, 8 или что-то подоб­ное.

полу­ча­ет­ся, что зада­ча про­грам­ми­ста — сво­и­ми дей­стви­я­ми как мож­но быст­рее прий­ти к тому, что­бы в про­ек­те оста­лись нена­пи­сан­ны­ми толь­ко фичи и что­бы их чис­ло дели­лось на 2. на стар­те ему нуж­но сде­лать 3 фичи, зна­чит, новая цель — из трёх багов полу­чить нечёт­ное коли­че­ство фич- в тре­ке­ре. в ито­ге это даст про­грам­ми­сту их чёт­ное коли­че­ство, и он их попар­но выпол­нит.

нечёт­ное коли­че­ство фич — это 1, 3, 5 и так далее. если мы закро­ем сра­зу два бага, то это даст нам толь­ко одну новую фичу в тре­ке­ре, и оста­нет­ся ещё один баг. дела­ем это за пер­вый час:

исход­ные дан­ные: 3 бага, 3 фичи.

час 1: 1 баг, 4 фичи (пофик­си­ли 2 бага, полу­чи­ли +1 фичу в тре­ке­ре).

у нас появи­лось чёт­ное коли­че­ство фич, кото­рые мож­но сра­зу попар­но закрыть. тра­тим ещё 2 часа.

час 2: 1 баг, 2 фичи (реа­ли­зо­ва­ли сра­зу 2 фичи, новых зада­ний не появи­лось).

час 3: 1 баг (реа­ли­зо­ва­ли сра­зу 2 фичи, новых зада­ний не появи­лось).

уже хоро­шо. теперь един­ствен­ное, что оста­ёт­ся про­грам­ми­сту — отра­бо­тать этот баг.

час 4: 2 бага (пофик­си­ли 1 баг, полу­чи­ли 2 новых).

а вот тут мож­но попасть в ловуш­ку, если сра­зу пофик­сить 2 бага и полу­чить фичу. дело в том, что если оста­ёт­ся толь­ко одна фича, то после её выпол­не­ния в тре­ке­ре появ­ля­ет­ся запись, что нуж­но сде­лать ещё одну. полу­ча­ет­ся бес­ко­неч­ный цикл. зна­чит, нам нуж­но фик­сить по одно­му багу по оче­ре­ди.

час 5: 3 бага (пофик­си­ли 1 баг, полу­чи­ли 2 новых).

ага, у нас уже 3 бага, а это зна­чит, что мож­но сде­лать одно­вре­мен­но 2 из них, и не попасть потом в замкну­тый круг. про­ве­рим.

час 6: 1 баг, 1 фича (пофик­си­ли 2 бага, полу­чи­ли +1 фичу в тре­ке­ре).

но мы уже встре­ча­ли ситу­а­цию, когда был толь­ко один баг, и зна­ем, как из него полу­чить 2, а из двух — фичу. дела­ем.

час 7: 2 бага, 1 фича (пофик­си­ли 1 баг, полу­чи­ли 2 новых).

час 8: 2 фичи (пофик­си­ли 2 бага, полу­чи­ли +1 фичу в тре­ке­ре).

и сно­ва появи­лось чёт­ное коли­че­ство фич, кото­рые нуж­но сде­лать. закры­ва­ем про­ект финаль­ным шагом.

час 9: всё сде­ла­но (реа­ли­зо­ва­ли сра­зу 2 фичи, новых зада­ний не появи­лось).

ответ: про­грам­ми­сту потре­бу­ет­ся мини­мум 9 часов.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
irinabelova200
14.03.2023 00:31
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
begin
  var F,G:file of integer;
  Assign(F,'FFile.dat'); Rewrite(F);
  for var i:=1 to 30 do Write(F,Random(-20,20));
  // Файл F создан и заполнен
  Assign(G,'GFile.dat'); Rewrite(G);
  F.Seek(0);
  var e:integer;
  Print('F:');
  while not F.Eof do begin
    Read(F,e); Print(e);
    if e>0 then Write(G,e)
    end;
  F.Seek(0);
  while not F.Eof do begin
    Read(F,e);
    if e<0 then Write(G,e)
    end;
  F.Seek(0);
  while not F.Eof do begin
    Read(F,e);
    if e=0 then Write(G,e)
    end;
  F.Close;
  Writeln;
  Print('G:');
  G.Seek(0);
  while not G.Eof do begin
    Read(G,e); Print(e)
    end;  
  G.Close
end.

Тестовое решение:
F: -14 15 -16 0 7 0 18 19 -12 -10 6 15 -19 -14 -15 -1 -6 -4 -20 12 10 4 3 16 -14 -20 3 10 -13 -16
G: 15 7 18 19 6 15 12 10 4 3 16 3 10 -14 -16 -12 -10 -19 -14 -15 -1 -6 -4 -20 -14 -20 -13 -16 0 0

Данное решение неоптимально по времени, поскольку файл читается трижды. Можно сделать иной вариант, читая данные за один проход и помещая в две вс структуры памяти отрицательные и нулевые элементы.

// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
begin
  var F,G:file of integer;
  Assign(F,'FFile.dat'); Rewrite(F);
  for var i:=1 to 30 do Write(F,Random(-20,20));
  // Файл F создан и заполнен
  Assign(G,'GFile.dat'); Rewrite(G);
  var n:=F.FileSize;
  var neg,zer:array of integer;
  SetLength(neg,n); SetLength(zer,n);
  F.Seek(0);
  var e:integer;
  var ineg:=0;
  var izer:=0;
  Print('F:');
  while not F.Eof do begin
    Read(F,e); Print(e);
    if e>0 then Write(G,e)
    else
      if e<0 then begin neg[ineg]:=e; Inc(ineg) end
      else begin zer[izer]:=e; Inc(izer) end
    end;
  F.Close;
  Writeln;
  SetLength(neg,ineg);
  foreach e in neg do Write(G,e);
  SetLength(zer,izer);
  foreach e in zer do Write(G,e);
  Print('G:');
  G.Seek(0);
  while not G.Eof do begin
    Read(G,e); Print(e)
    end; 
  G.Close
end.

Тестовое решение:
F: 7 5 -14 6 -11 -9 5 -1 5 -5 -7 -1 4 -20 17 -19 0 -3 0 6 20 1 -2 -18 9 20 0 -2 3 -13
G: 7 5 6 5 5 4 17 6 20 1 9 20 3 -14 -11 -9 -1 -5 -7 -1 -20 -19 -3 -2 -18 -2 -13 0 0 0
0,0(0 оценок)
Ответ:
yanasyperyanaco
17.04.2021 22:21
Воспользуемся расширенной записью шестнадцатиричного числа в десятичной системе счисления. Тогда
3(a*16²+b*16+c)=b*16²+c*16+a;
767a=208b+13c; 59a=16b+c → a=(16b+c)/59  (1)
Здесь a,b,c - шестнадцатиричные цифры, имеющие десятичный эквивалент от 0 до 15.
Наложим ограничения. a и b не могут быть нулевыми, поскольку с них начинаются числа, а с может быть и нулем. При b=15 и c=15 значение a по формуле (1) не может быть больше (16*15+15)/59, что в целых числах дает 4.
Следовательно, нам надо подобрать такие b и c, чтобы a принимало значения от 1 до 4. Будем подставлять эти значения в (1).
1) При а=1 получаем (16b+c)/59=1 → 16b+c=59.
b=59/16=3 (нацело), c=59-16*3=11. Искомое число 13B₁₆
2) При а=2 получаем (16b+c)/59=2 → 16b+c=118.
b=118/16=7 (нацело), с=118-16*7=6. Искомое число 276₁₆

Аналогичным образом находим два остальных числа: 3B1₁₆ и 4EC₁₆

Замечание. Фактически, мы получаем числа 59х1, 59х2, 59х3, 59х4 и переводим их в шестнадцатиричную систему счисления, поскольку в формуле (1) в скобках записано представление расширенное представление шестнадцатиричного числа.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота