I'm solving 27E — Number With The Given Amount Of Divisors. My code involved a function mul(a, b)
that will return 1018 + 7 if multiplying a and b will lead to overflow, and min(1018 + 7, a * b) otherwise. I checked for overflow using the condition a*b div a != b
.
When I submit my solution using C++14, it seemed that the overflow check failed, which lead to WA on test 5.
However, when I uncomment the if statement in the mul
function (which, theoretically don't print anything out), it get accepted.
I resubmitted the WA code with C++11 and C++17 Diagnostics, and it get accepted too. - C++11: 34068449 - C++17: 34068463
I don't know what happened here. I suspected that some kind of optimization from compiler caused this strange behavior, but unfoturnately I know nothing about compiler optimization. Can anyone give me a proper explanation about this strange behavior? Thanks in advance.