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.
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
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.
Name |
---|
Never use floating point functions. If you still want to use it, make sure you round instead of cast.
I see. I should probably avoid those. Thanks!
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
Thank you for the explanation!
you could use power, see this AC solution 10899961
I explained it here.
Interesting. Thanks!