|  | 
|  | 
| back to board | WA11 Posted by svr  8 Oct 2006 14:55Let S=maximal posible sum of pointsThen S=max{S:S/N<x+0.05},S=min(S,10*N);
 with multiplying by 100 we have the problem in integers
 If L is an answer then L=min(L:(S+L)/(N+L)<y+0.05);
 After multiplying by 100 we againg work in integers. But WA11
 
 Edited by author 08.10.2006 14:56
Re: WA11 Posted by serggl  9 Oct 2006 00:50That's the point?The same algo, but WA 12:
 var
 X, Y, s: extended;
 N, M: integer;
 SI: Integer;
 
 begin
 read(X, Y, N);
 
 if X <> 10.0 then
 X := X + 0.05;
 
 Y := Y + 0.05;
 
 if (X = Y) or (X < Y) then
 writeln('0')
 else begin
 s := n * X;
 SI := trunc(s);
 M := trunc((SI - N * Y) / (Y - 1));
 
 while ((M + SI) / (M + N)) >= Y do
 inc(M);
 
 writeln(M);
 end;
 end.
Re: WA11 Posted by svr  9 Oct 2006 11:57Thank for an answer!But now I have AC(0.015) with help of test 4.6 1.2 12997
 Mistake were in convertion XX=X*100 from double to int and
 instead of 460 I had XX=359 because X=4.59999999.
 I inprove my algorithm by an operator XX=(X+0.000001)*100
 but lost previously 1 day for debugging right program.
 About yor code my advice is convert all problem to int type
 first of all. Also it's important to know that we must use sign < but not<= then we roundind down after adding 0.05
Re: WA11 Posted by Daniel  10 Oct 2006 17:394.6 1.2 12997What is the right answer?
Re: WA11 I get AC (0.015) using dichotomy, and 0.0499999999999 instead of 0.05.
 (X+0.05) rounded to 1 digit after decimal point is equal to X+0.1, but
 (X+0.0499999999999) rounded to 1 digit after decimal point is equal to X.
 
 Edited by author 10.10.2006 18:20
 
 Edited by author 10.10.2006 18:21
 
 Edited by author 10.10.2006 18:21
 | 
 | 
|