[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Обучение программированию "с начала" 1, 2, 3
Автор Сообщение
Михаил Долинский

Темы: 2145
Сообщений: 51644

Мой профиль


Лев Сивко:

Здравствуйте.

В задаче "11. Сделай N" столкнулись с проблемой что программа для входных данных 15 находит решение "+*+", а в условии сказано что "**++", но оба решения подходят так как (1+3)*3+3 = 15 и 1*3*3+3+3 = 15

И подобное проявляется на поздних тестах.

Что можно сделать в этом случае? 


Ваша программа выдаёт неверный ответ "No" на 3-м тесте 102, а не на 1-ом тесте 15

Протокол по тестам
Тест	Результат	Время	Код выхода	Комментарий
1	0	0,1	  0  	верный ответ  Run test
2	0	0,1	  0  	верный ответ  Run test
3	0	0,1	  0  	Illegal Op : N  Run test


Там есть чекер, который проверяет последовательность, исполняя операции.

{(C) Sudilovsky Kostya 2002}
{corrected Dolinsky M, 17.08.2022}
{$A+,B-,D+,E-,F-,G+,I+,L+,N+,O-,P-,Q+,R+,S+,T-,V+,X+}
var 
  RightAns, UserAns,RightIn, Res :text;
    
  Procedure OK;
    begin
      assign(Res,'$result$.txt'); rewrite(Res);
      writeln(Res,paramstr(4));
      close(Res); close(UserAns); close(RightAns);
      halt(0);
    end;

  Procedure BAD(Message:string);
    begin
      assign(Res,'$result$.txt'); rewrite(Res);
      writeln(Res,0);
      writeln(Res,Message);
      close(Res); close(UserAns); close(RightAns);
      halt(0);
    end;

  Procedure Init;
    begin
      Assign(RightIn,paramstr(1));reset(RightIn);
      Assign(RightAns,paramstr(2));reset(RightAns);
      Assign(UserAns,paramstr(3)); reset(UserAns);
    end;

{ user variables }

var
  s         : string;
  N,d,i,Ans : longint;
Begin
  Init;
  readln(RightIn,N);
  read(UserAns, s);
  d:=length(s);
  Ans:=1;
  for i:=1 to d do
    begin
      if s[i]='*' then Ans:=Ans*3 else 
      if s[i]='+' then Ans:=Ans+3 else BAD('Illegal Op : '+s[i]);
    end;
  if Ans=N 
    then OK
    else BAD('Wrong Answer') 
End.

Лев Сивко

Темы: 0
Сообщений: 6

Мой профиль


Михаил Долинский:


Ваша программа выдаёт неверный ответ "No" на 3-м тесте 102, а не на 1-ом тесте 15
 


Понятно, спасибо. Правда там в условии написано что "Дано число N (2<=N<=100).", а в тесте получается 102.

Увеличили предел до 1000 и прошло.
 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Обучение программированию "с начала" 1, 2, 3
Time:0,039