Блог пользователя Ra1nWarden

Автор Ra1nWarden, 10 лет назад, По-английски

I had a weird WA during Round #300 (B) for the test case 415. I used the custom invocation tool and realized that ((int) pow(10, i)) when i=2 is equal to 99 and the number becomes 100 instead of 101. On my machine, the same code passed.

Теги bug
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Never use floating point functions. If you still want to use it, make sure you round instead of cast.

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

pow works in doubles. Answer can differ because of different compilers. In this case pow(10, 2) = 99.99999..., and it casts to 99. To avoid such bugs you can add eps to result, and cast it to int only after that.

P.S. your code get AC using MS compiler: 10898670

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

you could use power, see this AC solution 10899961

I explained it here.