|
|
back to boardPlease give me some tests. I just can't find a mistake The deal in the accuracy. I had WA#20 too but I replace this in my program ost=s-a*l; with ost=(s*10000-a*l*10000)/10000; s,a,l - double THANX!!! I've got AC. This is an interesting artefact. In FreePascal I had wa even when i've added multiplying on 10000. Then in C++ it worked. Thank you once more. you method reading data not good better this: read line as string s remove '.' convert to long! that all. in other algo you know.. Strange, I did this thing, but got WA. I used the same trick with Conductors problem (1011) and was lucky. Are you sure that it's just enough to multiply numbers, convert them in long and use them (I assume we're discussing the C++ realisation). I used here long double, but it didn't help here. I multiplied by 1000 as it was said here, but WA Can smbd give data for this test 20? I solved it using 'int' type in C++ #define THR (1e-8) int n; double ss, ll; scanf("%d %lf %lf", &n, &ss, &ll); int s = (int)(ss*10000 + THR); int l = (int)(ll*10000 + THR); printf("%d\n", f(n, s, l)); This is my code... but I got wa#20 :( ... TYPE ReaL = Double; VAR N : integer; Ans, S, L : ReaL; PROCEDURE Run; Var Res, Q : ReaL; i : integer; Begin ReadLn(N); ReadLn(S); ReadLn(L); Ans := N * Int(S / L); Q := (S * 10000 - ((Ans / N) * L * 10000)) / 10000; Res := 0; i := 0; while (i < N) and (Q > 0) do begin inc(i); if (Res * 10000 - Q * 10000) / 10000 < 0 then begin Ans := Ans + 1; Res := (L * 10000) / 10000; end; Res := (Res * 10000 - Q * 10000) / 10000; end; WriteLn(Ans : 0 : 0); End; BEGIN Run; END. |
|
|