Ra1nWarden's blog

By Ra1nWarden, 9 years ago, In English

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.

Tags bug
  • Vote: I like it
  • 0
  • Vote: I do not like it

»
9 years ago, # |
  Vote: I like it 0 Vote: I do not like it

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

»
9 years ago, # |
Rev. 2   Vote: I like it +6 Vote: I do not like it

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

»
9 years ago, # |
  Vote: I like it 0 Vote: I do not like it

you could use power, see this AC solution 10899961

I explained it here.