|
|
back to boardPrecision question What precision should we use in output? Could I have WA#17 because of it? Is double (long double) enough for us? Re: Precision question with a precision of 4 decimal digits. double is always enough for calculatings on Timus. Re: Precision question Then it (4 digits) should be written in russian statement. Re: Precision question To avoid precision problems it is possible to use only integer numbers in solving this task, but I have the same WA#17. Re: Precision question Do you use int64? Check it. (50 000 * 50 000 = 2 500 000 000) Re: Precision question Yes, of cause, I use unsigned __int64. Re: Precision question I tried double, __in64 and long double and still WA17. That must be some other bug... Re: Precision question Maybe problem with the following code: for ( i = 1; i <= m_N; ++i ) for ( j = 1; j <= m_N; ++j ) sum += t[ i ][ j ]; sum /= N * (N - 1); It must be obviously changed to ... for ( i = 1; i <= m_N; ++i ) for ( j = 1; j <= m_N; ++j ) sum += t[ i ][ j ]) / ( N * (N - 1)); overflow ... Maybe it will be usefull :- ) Re: Precision question And again I've tried both variants... Still WA17 Re: Precision question Why both variants! First fragment implyies WA ( it`s obvious ) Did you convert N to __int64 ? It was noted that N*N > signed int. Hmmm ... Send me your code ( see e-mail in my profile ) Re: Precision question Yes. The bug what in these data types. I think I should love __int64 from this task and further. Thank you very much! I got AC. Re: Precision question I used __int64 (signed) to get total sum of all paths. Then I casted it to double before division by n*(n-1)/2. Got WA41. That happened because 'n' was 'int' and that multiplication overflowed. Then I casted 'n' to 'int64' inside that multiplication and got AC. |
|
|